diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
new file mode 100644
index 0000000..7c2566a
--- /dev/null
+++ b/.dart_tool/package_config.json
@@ -0,0 +1,59 @@
+{
+ "configVersion": 2,
+ "packages": [
+ {
+ "name": "characters",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/characters-1.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "collection",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/collection-1.18.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "flutter",
+ "rootUri": "file:///Users/william/dev/flutter/packages/flutter",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "material_color_utilities",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/material_color_utilities-0.11.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "meta",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/meta-1.15.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "sky_engine",
+ "rootUri": "file:///Users/william/dev/flutter/bin/cache/pkg/sky_engine",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "vector_math",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/vector_math-2.1.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "flutter_zip_archive",
+ "rootUri": "../",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ }
+ ],
+ "generated": "2024-11-01T07:28:46.757750Z",
+ "generator": "pub",
+ "generatorVersion": "3.5.0",
+ "flutterRoot": "file:///Users/william/dev/flutter",
+ "flutterVersion": "3.24.0",
+ "pubCache": "file:///Users/william/.pub-cache"
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e26e0b9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,76 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Web related
+lib/generated_plugin_registrant.dart
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
+
+# Android Studio will place build artifacts here
+/android/app/debug
+/android/app/profile
+/android/app/release
+
+#amplify-do-not-edit-begin
+amplify/\#current-cloud-backend
+amplify/.config/local-*
+amplify/logs
+amplify/mock-data
+amplify/mock-api-resources
+amplify/backend/amplify-meta.json
+amplify/backend/.temp
+build/
+dist/
+node_modules/
+aws-exports.js
+awsconfiguration.json
+amplifyconfiguration.json
+amplifyconfiguration.dart
+amplify-build-config.json
+amplify-gradle-config.json
+amplifytools.xcconfig
+.secret-*
+**.sample
+#amplify-do-not-edit-end
+/amplify/
+.fvm
+.metadata
+.flutter-plugins-dependencies
+linux/flutter/ephemeral/.plugin_symlinks
+.flutter-plugins
+macos/Flutter/ephemeral
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
new file mode 100644
index 0000000..5a2f866
--- /dev/null
+++ b/.idea/caches/deviceStreaming.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/flutter_zip_archive.iml b/.idea/flutter_zip_archive.iml
new file mode 100644
index 0000000..55d90fc
--- /dev/null
+++ b/.idea/flutter_zip_archive.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Dart_SDK.xml b/.idea/libraries/Dart_SDK.xml
new file mode 100644
index 0000000..f235aca
--- /dev/null
+++ b/.idea/libraries/Dart_SDK.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Flutter_Plugins.xml b/.idea/libraries/Flutter_Plugins.xml
new file mode 100644
index 0000000..53449da
--- /dev/null
+++ b/.idea/libraries/Flutter_Plugins.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..1aef3c0
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android/build.gradle b/android/build.gradle
index 3b050ec..f3ce49f 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -29,7 +29,7 @@ if (flutterRoot == null) {
}
apply plugin: 'com.android.library'
android {
- compileSdkVersion 28
+ compileSdkVersion 34
defaultConfig {
minSdkVersion 16
diff --git a/android/src/main/java/com/jlcool/flutterziparchive/FlutterZipArchivePlugin.java b/android/src/main/java/com/jlcool/flutterziparchive/FlutterZipArchivePlugin.java
index 40adb60..5825e63 100644
--- a/android/src/main/java/com/jlcool/flutterziparchive/FlutterZipArchivePlugin.java
+++ b/android/src/main/java/com/jlcool/flutterziparchive/FlutterZipArchivePlugin.java
@@ -1,5 +1,7 @@
package com.jlcool.flutterziparchive;
+import androidx.annotation.NonNull;
+
import android.os.AsyncTask;
import net.lingala.zip4j.core.ZipFile;
@@ -17,22 +19,30 @@
import java.util.List;
import java.util.Map;
+import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
-import io.flutter.plugin.common.PluginRegistry.Registrar;
/**
* FlutterZipArchivePlugin
*/
-public class FlutterZipArchivePlugin implements MethodCallHandler {
+public class FlutterZipArchivePlugin implements FlutterPlugin, MethodCallHandler {
+ private MethodChannel channel;
+
/**
* Plugin registration.
*/
- public static void registerWith(Registrar registrar) {
- final MethodChannel channel = new MethodChannel(registrar.messenger(), "flutter_zip_archive");
- channel.setMethodCallHandler(new FlutterZipArchivePlugin());
+ @Override
+ public void onAttachedToEngine(@NonNull FlutterPlugin.FlutterPluginBinding flutterPluginBinding) {
+ channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "flutter_zip_archive");
+ channel.setMethodCallHandler(this);
+ }
+
+ @Override
+ public void onDetachedFromEngine(@NonNull FlutterPlugin.FlutterPluginBinding binding) {
+ channel.setMethodCallHandler(null);
}
@Override
diff --git a/example/.dart_tool/package_config.json b/example/.dart_tool/package_config.json
new file mode 100644
index 0000000..607e879
--- /dev/null
+++ b/example/.dart_tool/package_config.json
@@ -0,0 +1,353 @@
+{
+ "configVersion": 2,
+ "packages": [
+ {
+ "name": "async",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/async-2.11.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "boolean_selector",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "characters",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/characters-1.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "clock",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/clock-1.1.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "collection",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/collection-1.18.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "cross_file",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/cross_file-0.3.4+2",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "cupertino_icons",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.8",
+ "packageUri": "lib/",
+ "languageVersion": "3.1"
+ },
+ {
+ "name": "fake_async",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/fake_async-1.3.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "ffi",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/ffi-2.1.3",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "file_selector_linux",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.3",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "file_selector_macos",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.4+2",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "file_selector_platform_interface",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/file_selector_platform_interface-2.6.2",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ },
+ {
+ "name": "file_selector_windows",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3+3",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "flutter",
+ "rootUri": "file:///Users/william/dev/flutter/packages/flutter",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "flutter_plugin_android_lifecycle",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.23",
+ "packageUri": "lib/",
+ "languageVersion": "3.5"
+ },
+ {
+ "name": "flutter_test",
+ "rootUri": "file:///Users/william/dev/flutter/packages/flutter_test",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "flutter_web_plugins",
+ "rootUri": "file:///Users/william/dev/flutter/packages/flutter_web_plugins",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "flutter_zip_archive",
+ "rootUri": "../../",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ },
+ {
+ "name": "http",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/http-1.2.2",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "http_parser",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/http_parser-4.0.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "image_picker",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/image_picker-1.1.2",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "image_picker_android",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_android-0.8.12+17",
+ "packageUri": "lib/",
+ "languageVersion": "3.5"
+ },
+ {
+ "name": "image_picker_for_web",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_for_web-3.0.6",
+ "packageUri": "lib/",
+ "languageVersion": "3.4"
+ },
+ {
+ "name": "image_picker_ios",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "image_picker_linux",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1+1",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "image_picker_macos",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1+1",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "image_picker_platform_interface",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_platform_interface-2.10.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "image_picker_windows",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1+1",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "leak_tracker",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/leak_tracker-10.0.5",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "leak_tracker_flutter_testing",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/leak_tracker_flutter_testing-3.0.5",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "leak_tracker_testing",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/leak_tracker_testing-3.0.1",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "matcher",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/matcher-0.12.16+1",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ },
+ {
+ "name": "material_color_utilities",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/material_color_utilities-0.11.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.17"
+ },
+ {
+ "name": "meta",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/meta-1.15.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "mime",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/mime-2.0.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "path",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/path-1.9.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ },
+ {
+ "name": "path_provider",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/path_provider-2.1.5",
+ "packageUri": "lib/",
+ "languageVersion": "3.4"
+ },
+ {
+ "name": "path_provider_android",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_android-2.2.12",
+ "packageUri": "lib/",
+ "languageVersion": "3.5"
+ },
+ {
+ "name": "path_provider_foundation",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "path_provider_linux",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "path_provider_platform_interface",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.1.2",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ },
+ {
+ "name": "path_provider_windows",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "platform",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/platform-3.1.6",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "plugin_platform_interface",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.8",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ },
+ {
+ "name": "sky_engine",
+ "rootUri": "file:///Users/william/dev/flutter/bin/cache/pkg/sky_engine",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "source_span",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/source_span-1.10.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "stack_trace",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/stack_trace-1.11.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "stream_channel",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/stream_channel-2.1.2",
+ "packageUri": "lib/",
+ "languageVersion": "2.19"
+ },
+ {
+ "name": "string_scanner",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/string_scanner-1.2.0",
+ "packageUri": "lib/",
+ "languageVersion": "2.18"
+ },
+ {
+ "name": "term_glyph",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/term_glyph-1.2.1",
+ "packageUri": "lib/",
+ "languageVersion": "2.12"
+ },
+ {
+ "name": "test_api",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/test_api-0.7.2",
+ "packageUri": "lib/",
+ "languageVersion": "3.2"
+ },
+ {
+ "name": "typed_data",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/typed_data-1.4.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.5"
+ },
+ {
+ "name": "vector_math",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/vector_math-2.1.4",
+ "packageUri": "lib/",
+ "languageVersion": "2.14"
+ },
+ {
+ "name": "vm_service",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/vm_service-14.2.4",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "web",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/web-1.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.4"
+ },
+ {
+ "name": "xdg_directories",
+ "rootUri": "file:///Users/william/.pub-cache/hosted/pub.dev/xdg_directories-1.1.0",
+ "packageUri": "lib/",
+ "languageVersion": "3.3"
+ },
+ {
+ "name": "flutter_zip_archive_example",
+ "rootUri": "../",
+ "packageUri": "lib/",
+ "languageVersion": "3.0"
+ }
+ ],
+ "generated": "2024-11-01T11:55:08.559654Z",
+ "generator": "pub",
+ "generatorVersion": "3.5.0",
+ "flutterRoot": "file:///Users/william/dev/flutter",
+ "flutterVersion": "3.24.0",
+ "pubCache": "file:///Users/william/.pub-cache"
+}
diff --git a/example/.dart_tool/package_config_subset b/example/.dart_tool/package_config_subset
new file mode 100644
index 0000000..10226c5
--- /dev/null
+++ b/example/.dart_tool/package_config_subset
@@ -0,0 +1,229 @@
+async
+2.18
+file:///Users/william/.pub-cache/hosted/pub.dev/async-2.11.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/async-2.11.0/lib/
+boolean_selector
+2.17
+file:///Users/william/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/
+file:///Users/william/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/
+characters
+2.12
+file:///Users/william/.pub-cache/hosted/pub.dev/characters-1.3.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/characters-1.3.0/lib/
+clock
+2.12
+file:///Users/william/.pub-cache/hosted/pub.dev/clock-1.1.1/
+file:///Users/william/.pub-cache/hosted/pub.dev/clock-1.1.1/lib/
+collection
+2.18
+file:///Users/william/.pub-cache/hosted/pub.dev/collection-1.18.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/collection-1.18.0/lib/
+cross_file
+3.3
+file:///Users/william/.pub-cache/hosted/pub.dev/cross_file-0.3.4+2/
+file:///Users/william/.pub-cache/hosted/pub.dev/cross_file-0.3.4+2/lib/
+cupertino_icons
+3.1
+file:///Users/william/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.8/
+file:///Users/william/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.8/lib/
+fake_async
+2.12
+file:///Users/william/.pub-cache/hosted/pub.dev/fake_async-1.3.1/
+file:///Users/william/.pub-cache/hosted/pub.dev/fake_async-1.3.1/lib/
+ffi
+3.3
+file:///Users/william/.pub-cache/hosted/pub.dev/ffi-2.1.3/
+file:///Users/william/.pub-cache/hosted/pub.dev/ffi-2.1.3/lib/
+file_selector_linux
+3.3
+file:///Users/william/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.3/
+file:///Users/william/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.3/lib/
+file_selector_macos
+3.3
+file:///Users/william/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.4+2/
+file:///Users/william/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.4+2/lib/
+file_selector_platform_interface
+3.0
+file:///Users/william/.pub-cache/hosted/pub.dev/file_selector_platform_interface-2.6.2/
+file:///Users/william/.pub-cache/hosted/pub.dev/file_selector_platform_interface-2.6.2/lib/
+file_selector_windows
+3.3
+file:///Users/william/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3+3/
+file:///Users/william/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3+3/lib/
+flutter_plugin_android_lifecycle
+3.5
+file:///Users/william/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.23/
+file:///Users/william/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.23/lib/
+http
+3.3
+file:///Users/william/.pub-cache/hosted/pub.dev/http-1.2.2/
+file:///Users/william/.pub-cache/hosted/pub.dev/http-1.2.2/lib/
+http_parser
+2.12
+file:///Users/william/.pub-cache/hosted/pub.dev/http_parser-4.0.2/
+file:///Users/william/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/
+image_picker
+3.3
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker-1.1.2/
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker-1.1.2/lib/
+image_picker_android
+3.5
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_android-0.8.12+17/
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_android-0.8.12+17/lib/
+image_picker_for_web
+3.4
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_for_web-3.0.6/
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_for_web-3.0.6/lib/
+image_picker_ios
+3.3
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/lib/
+image_picker_linux
+2.19
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1+1/
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1+1/lib/
+image_picker_macos
+2.19
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1+1/
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1+1/lib/
+image_picker_platform_interface
+3.3
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_platform_interface-2.10.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_platform_interface-2.10.0/lib/
+image_picker_windows
+2.19
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1+1/
+file:///Users/william/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1+1/lib/
+leak_tracker
+3.2
+file:///Users/william/.pub-cache/hosted/pub.dev/leak_tracker-10.0.5/
+file:///Users/william/.pub-cache/hosted/pub.dev/leak_tracker-10.0.5/lib/
+leak_tracker_flutter_testing
+3.2
+file:///Users/william/.pub-cache/hosted/pub.dev/leak_tracker_flutter_testing-3.0.5/
+file:///Users/william/.pub-cache/hosted/pub.dev/leak_tracker_flutter_testing-3.0.5/lib/
+leak_tracker_testing
+3.2
+file:///Users/william/.pub-cache/hosted/pub.dev/leak_tracker_testing-3.0.1/
+file:///Users/william/.pub-cache/hosted/pub.dev/leak_tracker_testing-3.0.1/lib/
+matcher
+3.0
+file:///Users/william/.pub-cache/hosted/pub.dev/matcher-0.12.16+1/
+file:///Users/william/.pub-cache/hosted/pub.dev/matcher-0.12.16+1/lib/
+material_color_utilities
+2.17
+file:///Users/william/.pub-cache/hosted/pub.dev/material_color_utilities-0.11.1/
+file:///Users/william/.pub-cache/hosted/pub.dev/material_color_utilities-0.11.1/lib/
+meta
+2.12
+file:///Users/william/.pub-cache/hosted/pub.dev/meta-1.15.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/meta-1.15.0/lib/
+mime
+3.2
+file:///Users/william/.pub-cache/hosted/pub.dev/mime-2.0.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/mime-2.0.0/lib/
+path
+3.0
+file:///Users/william/.pub-cache/hosted/pub.dev/path-1.9.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/path-1.9.0/lib/
+path_provider
+3.4
+file:///Users/william/.pub-cache/hosted/pub.dev/path_provider-2.1.5/
+file:///Users/william/.pub-cache/hosted/pub.dev/path_provider-2.1.5/lib/
+path_provider_android
+3.5
+file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_android-2.2.12/
+file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_android-2.2.12/lib/
+path_provider_foundation
+3.2
+file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/lib/
+path_provider_linux
+2.19
+file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/
+file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/lib/
+path_provider_platform_interface
+3.0
+file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.1.2/
+file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.1.2/lib/
+path_provider_windows
+3.2
+file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/lib/
+platform
+3.2
+file:///Users/william/.pub-cache/hosted/pub.dev/platform-3.1.6/
+file:///Users/william/.pub-cache/hosted/pub.dev/platform-3.1.6/lib/
+plugin_platform_interface
+3.0
+file:///Users/william/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.8/
+file:///Users/william/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.8/lib/
+source_span
+2.18
+file:///Users/william/.pub-cache/hosted/pub.dev/source_span-1.10.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/source_span-1.10.0/lib/
+stack_trace
+2.18
+file:///Users/william/.pub-cache/hosted/pub.dev/stack_trace-1.11.1/
+file:///Users/william/.pub-cache/hosted/pub.dev/stack_trace-1.11.1/lib/
+stream_channel
+2.19
+file:///Users/william/.pub-cache/hosted/pub.dev/stream_channel-2.1.2/
+file:///Users/william/.pub-cache/hosted/pub.dev/stream_channel-2.1.2/lib/
+string_scanner
+2.18
+file:///Users/william/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/string_scanner-1.2.0/lib/
+term_glyph
+2.12
+file:///Users/william/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/
+file:///Users/william/.pub-cache/hosted/pub.dev/term_glyph-1.2.1/lib/
+test_api
+3.2
+file:///Users/william/.pub-cache/hosted/pub.dev/test_api-0.7.2/
+file:///Users/william/.pub-cache/hosted/pub.dev/test_api-0.7.2/lib/
+typed_data
+3.5
+file:///Users/william/.pub-cache/hosted/pub.dev/typed_data-1.4.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/typed_data-1.4.0/lib/
+vector_math
+2.14
+file:///Users/william/.pub-cache/hosted/pub.dev/vector_math-2.1.4/
+file:///Users/william/.pub-cache/hosted/pub.dev/vector_math-2.1.4/lib/
+vm_service
+3.3
+file:///Users/william/.pub-cache/hosted/pub.dev/vm_service-14.2.4/
+file:///Users/william/.pub-cache/hosted/pub.dev/vm_service-14.2.4/lib/
+web
+3.4
+file:///Users/william/.pub-cache/hosted/pub.dev/web-1.1.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/web-1.1.0/lib/
+xdg_directories
+3.3
+file:///Users/william/.pub-cache/hosted/pub.dev/xdg_directories-1.1.0/
+file:///Users/william/.pub-cache/hosted/pub.dev/xdg_directories-1.1.0/lib/
+sky_engine
+3.2
+file:///Users/william/dev/flutter/bin/cache/pkg/sky_engine/
+file:///Users/william/dev/flutter/bin/cache/pkg/sky_engine/lib/
+flutter
+3.3
+file:///Users/william/dev/flutter/packages/flutter/
+file:///Users/william/dev/flutter/packages/flutter/lib/
+flutter_test
+3.3
+file:///Users/william/dev/flutter/packages/flutter_test/
+file:///Users/william/dev/flutter/packages/flutter_test/lib/
+flutter_web_plugins
+3.2
+file:///Users/william/dev/flutter/packages/flutter_web_plugins/
+file:///Users/william/dev/flutter/packages/flutter_web_plugins/lib/
+flutter_zip_archive
+3.0
+file:///Users/william/dev/flutter_zip_archive/
+file:///Users/william/dev/flutter_zip_archive/lib/
+flutter_zip_archive_example
+3.0
+file:///Users/william/dev/flutter_zip_archive/example/
+file:///Users/william/dev/flutter_zip_archive/example/lib/
+2
diff --git a/example/.dart_tool/version b/example/.dart_tool/version
new file mode 100644
index 0000000..b7bc73b
--- /dev/null
+++ b/example/.dart_tool/version
@@ -0,0 +1 @@
+3.24.0
\ No newline at end of file
diff --git a/example/.flutter-plugins b/example/.flutter-plugins
new file mode 100644
index 0000000..88101a7
--- /dev/null
+++ b/example/.flutter-plugins
@@ -0,0 +1,18 @@
+# This is a generated file; do not edit or check into version control.
+file_selector_linux=/Users/william/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.3/
+file_selector_macos=/Users/william/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.4+2/
+file_selector_windows=/Users/william/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3+3/
+flutter_plugin_android_lifecycle=/Users/william/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.23/
+flutter_zip_archive=/Users/william/dev/flutter_zip_archive/
+image_picker=/Users/william/.pub-cache/hosted/pub.dev/image_picker-1.1.2/
+image_picker_android=/Users/william/.pub-cache/hosted/pub.dev/image_picker_android-0.8.12+17/
+image_picker_for_web=/Users/william/.pub-cache/hosted/pub.dev/image_picker_for_web-3.0.6/
+image_picker_ios=/Users/william/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/
+image_picker_linux=/Users/william/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1+1/
+image_picker_macos=/Users/william/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1+1/
+image_picker_windows=/Users/william/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1+1/
+path_provider=/Users/william/.pub-cache/hosted/pub.dev/path_provider-2.1.5/
+path_provider_android=/Users/william/.pub-cache/hosted/pub.dev/path_provider_android-2.2.12/
+path_provider_foundation=/Users/william/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/
+path_provider_linux=/Users/william/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/
+path_provider_windows=/Users/william/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/
diff --git a/example/.flutter-plugins-dependencies b/example/.flutter-plugins-dependencies
new file mode 100644
index 0000000..5999dbd
--- /dev/null
+++ b/example/.flutter-plugins-dependencies
@@ -0,0 +1 @@
+{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"flutter_zip_archive","path":"/Users/william/dev/flutter_zip_archive/","native_build":true,"dependencies":[]},{"name":"image_picker_ios","path":"/Users/william/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"/Users/william/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"android":[{"name":"flutter_plugin_android_lifecycle","path":"/Users/william/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.23/","native_build":true,"dependencies":[]},{"name":"flutter_zip_archive","path":"/Users/william/dev/flutter_zip_archive/","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"/Users/william/.pub-cache/hosted/pub.dev/image_picker_android-0.8.12+17/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"path_provider_android","path":"/Users/william/.pub-cache/hosted/pub.dev/path_provider_android-2.2.12/","native_build":true,"dependencies":[]}],"macos":[{"name":"file_selector_macos","path":"/Users/william/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.4+2/","native_build":true,"dependencies":[]},{"name":"image_picker_macos","path":"/Users/william/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1+1/","native_build":false,"dependencies":["file_selector_macos"]},{"name":"path_provider_foundation","path":"/Users/william/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"linux":[{"name":"file_selector_linux","path":"/Users/william/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.3/","native_build":true,"dependencies":[]},{"name":"image_picker_linux","path":"/Users/william/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1+1/","native_build":false,"dependencies":["file_selector_linux"]},{"name":"path_provider_linux","path":"/Users/william/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[]}],"windows":[{"name":"file_selector_windows","path":"/Users/william/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3+3/","native_build":true,"dependencies":[]},{"name":"image_picker_windows","path":"/Users/william/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1+1/","native_build":false,"dependencies":["file_selector_windows"]},{"name":"path_provider_windows","path":"/Users/william/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[]}],"web":[{"name":"image_picker_for_web","path":"/Users/william/.pub-cache/hosted/pub.dev/image_picker_for_web-3.0.6/","dependencies":[]}]},"dependencyGraph":[{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_zip_archive","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2024-11-01 22:06:47.519982","version":"3.24.0","swift_package_manager_enabled":false}
\ No newline at end of file
diff --git a/example/.gitignore b/example/.gitignore
new file mode 100644
index 0000000..24476c5
--- /dev/null
+++ b/example/.gitignore
@@ -0,0 +1,44 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
+
+# Android Studio will place build artifacts here
+/android/app/debug
+/android/app/profile
+/android/app/release
diff --git a/example/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java b/example/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
new file mode 100644
index 0000000..1da69db
--- /dev/null
+++ b/example/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
@@ -0,0 +1,34 @@
+package io.flutter.plugins;
+
+import androidx.annotation.Keep;
+import androidx.annotation.NonNull;
+import io.flutter.Log;
+
+import io.flutter.embedding.engine.FlutterEngine;
+
+/**
+ * Generated file. Do not edit.
+ * This file is generated by the Flutter tool based on the
+ * plugins that support the Android platform.
+ */
+@Keep
+public final class GeneratedPluginRegistrant {
+ private static final String TAG = "GeneratedPluginRegistrant";
+ public static void registerWith(@NonNull FlutterEngine flutterEngine) {
+ try {
+ flutterEngine.getPlugins().add(new io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin());
+ } catch (Exception e) {
+ Log.e(TAG, "Error registering plugin flutter_plugin_android_lifecycle, io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin", e);
+ }
+ try {
+ flutterEngine.getPlugins().add(new io.flutter.plugins.imagepicker.ImagePickerPlugin());
+ } catch (Exception e) {
+ Log.e(TAG, "Error registering plugin image_picker_android, io.flutter.plugins.imagepicker.ImagePickerPlugin", e);
+ }
+ try {
+ flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin());
+ } catch (Exception e) {
+ Log.e(TAG, "Error registering plugin path_provider_android, io.flutter.plugins.pathprovider.PathProviderPlugin", e);
+ }
+ }
+}
diff --git a/example/android/local.properties b/example/android/local.properties
new file mode 100644
index 0000000..72225c3
--- /dev/null
+++ b/example/android/local.properties
@@ -0,0 +1,2 @@
+sdk.dir=/Users/william/Library/Android/sdk
+flutter.sdk=/Users/william/dev/flutter
\ No newline at end of file
diff --git a/example/build/ios/Runner.build/Release-iphoneos/Runner.build/dgph b/example/build/ios/Runner.build/Release-iphoneos/Runner.build/dgph
new file mode 100644
index 0000000..25a5898
Binary files /dev/null and b/example/build/ios/Runner.build/Release-iphoneos/Runner.build/dgph differ
diff --git a/example/ios/.symlinks/plugins/flutter_zip_archive b/example/ios/.symlinks/plugins/flutter_zip_archive
new file mode 120000
index 0000000..1c3c981
--- /dev/null
+++ b/example/ios/.symlinks/plugins/flutter_zip_archive
@@ -0,0 +1 @@
+/Users/william/dev/flutter_zip_archive/
\ No newline at end of file
diff --git a/example/ios/.symlinks/plugins/image_picker_ios b/example/ios/.symlinks/plugins/image_picker_ios
new file mode 120000
index 0000000..6bff9e3
--- /dev/null
+++ b/example/ios/.symlinks/plugins/image_picker_ios
@@ -0,0 +1 @@
+/Users/william/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/
\ No newline at end of file
diff --git a/example/ios/.symlinks/plugins/path_provider_foundation b/example/ios/.symlinks/plugins/path_provider_foundation
new file mode 120000
index 0000000..0848228
--- /dev/null
+++ b/example/ios/.symlinks/plugins/path_provider_foundation
@@ -0,0 +1 @@
+/Users/william/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/
\ No newline at end of file
diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist
index 9367d48..7c56964 100644
--- a/example/ios/Flutter/AppFrameworkInfo.plist
+++ b/example/ios/Flutter/AppFrameworkInfo.plist
@@ -21,6 +21,6 @@
CFBundleVersion
1.0
MinimumOSVersion
- 8.0
+ 12.0
diff --git a/example/ios/Flutter/Flutter.podspec b/example/ios/Flutter/Flutter.podspec
new file mode 100644
index 0000000..98e1633
--- /dev/null
+++ b/example/ios/Flutter/Flutter.podspec
@@ -0,0 +1,18 @@
+#
+# This podspec is NOT to be published. It is only used as a local source!
+# This is a generated file; do not edit or check into version control.
+#
+
+Pod::Spec.new do |s|
+ s.name = 'Flutter'
+ s.version = '1.0.0'
+ s.summary = 'A UI toolkit for beautiful and fast apps.'
+ s.homepage = 'https://flutter.dev'
+ s.license = { :type => 'BSD' }
+ s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
+ s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s }
+ s.ios.deployment_target = '12.0'
+ # Framework linking is handled by Flutter tooling, not CocoaPods.
+ # Add a placeholder to satisfy `s.dependency 'Flutter'` plugin podspecs.
+ s.vendored_frameworks = 'path/to/nothing'
+end
diff --git a/example/ios/Flutter/Generated.xcconfig b/example/ios/Flutter/Generated.xcconfig
index cbd0746..ba36383 100644
--- a/example/ios/Flutter/Generated.xcconfig
+++ b/example/ios/Flutter/Generated.xcconfig
@@ -1,8 +1,15 @@
// This is a generated file; do not edit or check into version control.
-FLUTTER_ROOT=/Users/jiangliang/development/flutter
-FLUTTER_APPLICATION_PATH=/Users/jiangliang/flutterproject/flutter_zip_archive/example
-FLUTTER_TARGET=/Users/jiangliang/flutterproject/flutter_zip_archive/example/lib/main.dart
+FLUTTER_ROOT=/Users/william/dev/flutter
+FLUTTER_APPLICATION_PATH=/Users/william/dev/flutter_zip_archive/example
+COCOAPODS_PARALLEL_CODE_SIGN=true
+FLUTTER_TARGET=/Users/william/dev/flutter_zip_archive/example/lib/main.dart
FLUTTER_BUILD_DIR=build
-SYMROOT=${SOURCE_ROOT}/../build/ios
-FLUTTER_FRAMEWORK_DIR=/Users/jiangliang/development/flutter/bin/cache/artifacts/engine/ios
+FLUTTER_BUILD_NAME=1.0.0
+FLUTTER_BUILD_NUMBER=1
+EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386
+EXCLUDED_ARCHS[sdk=iphoneos*]=armv7
+DART_DEFINES=Zmx1dHRlci5pbnNwZWN0b3Iuc3RydWN0dXJlZEVycm9ycz10cnVl
+DART_OBFUSCATION=false
TRACK_WIDGET_CREATION=true
+TREE_SHAKE_ICONS=false
+PACKAGE_CONFIG=/Users/william/dev/flutter_zip_archive/example/.dart_tool/package_config.json
diff --git a/example/ios/Flutter/flutter_export_environment.sh b/example/ios/Flutter/flutter_export_environment.sh
new file mode 100755
index 0000000..28ddb3b
--- /dev/null
+++ b/example/ios/Flutter/flutter_export_environment.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+# This is a generated file; do not edit or check into version control.
+export "FLUTTER_ROOT=/Users/william/dev/flutter"
+export "FLUTTER_APPLICATION_PATH=/Users/william/dev/flutter_zip_archive/example"
+export "COCOAPODS_PARALLEL_CODE_SIGN=true"
+export "FLUTTER_TARGET=/Users/william/dev/flutter_zip_archive/example/lib/main.dart"
+export "FLUTTER_BUILD_DIR=build"
+export "FLUTTER_BUILD_NAME=1.0.0"
+export "FLUTTER_BUILD_NUMBER=1"
+export "DART_DEFINES=Zmx1dHRlci5pbnNwZWN0b3Iuc3RydWN0dXJlZEVycm9ycz10cnVl"
+export "DART_OBFUSCATION=false"
+export "TRACK_WIDGET_CREATION=true"
+export "TREE_SHAKE_ICONS=false"
+export "PACKAGE_CONFIG=/Users/william/dev/flutter_zip_archive/example/.dart_tool/package_config.json"
diff --git a/example/ios/Podfile b/example/ios/Podfile
new file mode 100644
index 0000000..b331c7b
--- /dev/null
+++ b/example/ios/Podfile
@@ -0,0 +1,38 @@
+# Uncomment this line to define a global platform for your project
+platform :ios, '12.0'
+
+# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
+ENV['COCOAPODS_DISABLE_STATS'] = 'true'
+
+project 'Runner', {
+ 'Debug' => :debug,
+ 'Profile' => :release,
+ 'Release' => :release,
+}
+
+def flutter_root
+ generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
+ unless File.exist?(generated_xcode_build_settings_path)
+ raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
+ end
+
+ File.foreach(generated_xcode_build_settings_path) do |line|
+ matches = line.match(/FLUTTER_ROOT\=(.*)/)
+ return matches[1].strip if matches
+ end
+ raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
+end
+
+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+
+flutter_ios_podfile_setup
+
+target 'Runner' do
+ flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
+end
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ flutter_additional_ios_build_settings(target)
+ end
+end
diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock
new file mode 100644
index 0000000..53b0785
--- /dev/null
+++ b/example/ios/Podfile.lock
@@ -0,0 +1,42 @@
+PODS:
+ - Flutter (1.0.0)
+ - flutter_zip_archive (0.0.1):
+ - Flutter
+ - SSZipArchive
+ - image_picker_ios (0.0.1):
+ - Flutter
+ - path_provider_foundation (0.0.1):
+ - Flutter
+ - FlutterMacOS
+ - SSZipArchive (2.4.3)
+
+DEPENDENCIES:
+ - Flutter (from `Flutter`)
+ - flutter_zip_archive (from `.symlinks/plugins/flutter_zip_archive/ios`)
+ - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
+ - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
+
+SPEC REPOS:
+ trunk:
+ - SSZipArchive
+
+EXTERNAL SOURCES:
+ Flutter:
+ :path: Flutter
+ flutter_zip_archive:
+ :path: ".symlinks/plugins/flutter_zip_archive/ios"
+ image_picker_ios:
+ :path: ".symlinks/plugins/image_picker_ios/ios"
+ path_provider_foundation:
+ :path: ".symlinks/plugins/path_provider_foundation/darwin"
+
+SPEC CHECKSUMS:
+ Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
+ flutter_zip_archive: 0720df756f6e5eee393e52da24877d0b7bb90fab
+ image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
+ path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
+ SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
+
+PODFILE CHECKSUM: cf0c950f7e9a456b4e325f5b8fc0f98906a3705a
+
+COCOAPODS: 1.16.2
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/SSZipArchive.h b/example/ios/Pods/Headers/Private/SSZipArchive/SSZipArchive.h
new file mode 120000
index 0000000..951d734
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/SSZipArchive.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/SSZipArchive.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/SSZipCommon.h b/example/ios/Pods/Headers/Private/SSZipArchive/SSZipCommon.h
new file mode 120000
index 0000000..1ef5dd6
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/SSZipCommon.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/SSZipCommon.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/ZipArchive.h b/example/ios/Pods/Headers/Private/SSZipArchive/ZipArchive.h
new file mode 120000
index 0000000..bb00547
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/ZipArchive.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/include/ZipArchive.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz.h
new file mode 120000
index 0000000..0c15c50
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_compat.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_compat.h
new file mode 120000
index 0000000..1dc2332
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_compat.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_compat.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_crypt.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_crypt.h
new file mode 120000
index 0000000..095e038
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_crypt.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_crypt.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_os.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_os.h
new file mode 120000
index 0000000..1bd59bd
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_os.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_os.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm.h
new file mode 120000
index 0000000..7ac6185
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_strm.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_buf.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_buf.h
new file mode 120000
index 0000000..d319c85
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_buf.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_strm_buf.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_mem.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_mem.h
new file mode 120000
index 0000000..a94de59
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_mem.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_strm_mem.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_os.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_os.h
new file mode 120000
index 0000000..459faef
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_os.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_strm_os.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_pkcrypt.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_pkcrypt.h
new file mode 120000
index 0000000..9f555ed
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_pkcrypt.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_strm_pkcrypt.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_split.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_split.h
new file mode 120000
index 0000000..7498841
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_split.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_strm_split.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_wzaes.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_wzaes.h
new file mode 120000
index 0000000..a4902ce
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_wzaes.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_strm_wzaes.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_zlib.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_zlib.h
new file mode 120000
index 0000000..652c1d6
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_strm_zlib.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_strm_zlib.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_zip.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_zip.h
new file mode 120000
index 0000000..5e4dcdb
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_zip.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_zip.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/SSZipArchive/mz_zip_rw.h b/example/ios/Pods/Headers/Private/SSZipArchive/mz_zip_rw.h
new file mode 120000
index 0000000..dc81298
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/SSZipArchive/mz_zip_rw.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/minizip/mz_zip_rw.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/flutter_zip_archive/FlutterZipArchivePlugin.h b/example/ios/Pods/Headers/Private/flutter_zip_archive/FlutterZipArchivePlugin.h
new file mode 120000
index 0000000..3629b10
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/flutter_zip_archive/FlutterZipArchivePlugin.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/flutter_zip_archive/ios/Classes/FlutterZipArchivePlugin.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerImageUtil.h b/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerImageUtil.h
new file mode 120000
index 0000000..3cdc079
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerImageUtil.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerImageUtil.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerMetaDataUtil.h b/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerMetaDataUtil.h
new file mode 120000
index 0000000..f496814
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerMetaDataUtil.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerMetaDataUtil.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerPhotoAssetUtil.h b/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerPhotoAssetUtil.h
new file mode 120000
index 0000000..c287b03
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerPhotoAssetUtil.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerPhotoAssetUtil.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerPlugin.h b/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerPlugin.h
new file mode 120000
index 0000000..b5a2d16
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerPlugin.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerPlugin.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerPlugin_Test.h b/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerPlugin_Test.h
new file mode 120000
index 0000000..0604814
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/image_picker_ios/FLTImagePickerPlugin_Test.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerPlugin_Test.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/image_picker_ios/FLTPHPickerSaveImageToPathOperation.h b/example/ios/Pods/Headers/Private/image_picker_ios/FLTPHPickerSaveImageToPathOperation.h
new file mode 120000
index 0000000..1f17fef
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/image_picker_ios/FLTPHPickerSaveImageToPathOperation.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTPHPickerSaveImageToPathOperation.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/image_picker_ios/image_picker_ios-umbrella.h b/example/ios/Pods/Headers/Private/image_picker_ios/image_picker_ios-umbrella.h
new file mode 120000
index 0000000..b233980
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/image_picker_ios/image_picker_ios-umbrella.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios-umbrella.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/image_picker_ios/image_picker_ios.modulemap b/example/ios/Pods/Headers/Private/image_picker_ios/image_picker_ios.modulemap
new file mode 120000
index 0000000..7d60ea7
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/image_picker_ios/image_picker_ios.modulemap
@@ -0,0 +1 @@
+../../../Target Support Files/image_picker_ios/image_picker_ios.modulemap
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Private/image_picker_ios/messages.g.h b/example/ios/Pods/Headers/Private/image_picker_ios/messages.g.h
new file mode 120000
index 0000000..57116c8
--- /dev/null
+++ b/example/ios/Pods/Headers/Private/image_picker_ios/messages.g.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/messages.g.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/SSZipArchive/SSZipArchive-umbrella.h b/example/ios/Pods/Headers/Public/SSZipArchive/SSZipArchive-umbrella.h
new file mode 120000
index 0000000..637dd5e
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/SSZipArchive/SSZipArchive-umbrella.h
@@ -0,0 +1 @@
+../../../Target Support Files/SSZipArchive/SSZipArchive-umbrella.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/SSZipArchive/SSZipArchive.h b/example/ios/Pods/Headers/Public/SSZipArchive/SSZipArchive.h
new file mode 120000
index 0000000..951d734
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/SSZipArchive/SSZipArchive.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/SSZipArchive.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/SSZipArchive/SSZipArchive.modulemap b/example/ios/Pods/Headers/Public/SSZipArchive/SSZipArchive.modulemap
new file mode 120000
index 0000000..1e05535
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/SSZipArchive/SSZipArchive.modulemap
@@ -0,0 +1 @@
+../../../Target Support Files/SSZipArchive/SSZipArchive.modulemap
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/SSZipArchive/SSZipCommon.h b/example/ios/Pods/Headers/Public/SSZipArchive/SSZipCommon.h
new file mode 120000
index 0000000..1ef5dd6
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/SSZipArchive/SSZipCommon.h
@@ -0,0 +1 @@
+../../../SSZipArchive/SSZipArchive/SSZipCommon.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/flutter_zip_archive/FlutterZipArchivePlugin.h b/example/ios/Pods/Headers/Public/flutter_zip_archive/FlutterZipArchivePlugin.h
new file mode 120000
index 0000000..3629b10
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/flutter_zip_archive/FlutterZipArchivePlugin.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/flutter_zip_archive/ios/Classes/FlutterZipArchivePlugin.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerImageUtil.h b/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerImageUtil.h
new file mode 120000
index 0000000..3cdc079
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerImageUtil.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerImageUtil.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerMetaDataUtil.h b/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerMetaDataUtil.h
new file mode 120000
index 0000000..f496814
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerMetaDataUtil.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerMetaDataUtil.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerPhotoAssetUtil.h b/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerPhotoAssetUtil.h
new file mode 120000
index 0000000..c287b03
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerPhotoAssetUtil.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerPhotoAssetUtil.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerPlugin.h b/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerPlugin.h
new file mode 120000
index 0000000..b5a2d16
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerPlugin.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerPlugin.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerPlugin_Test.h b/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerPlugin_Test.h
new file mode 120000
index 0000000..0604814
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/image_picker_ios/FLTImagePickerPlugin_Test.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerPlugin_Test.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/image_picker_ios/FLTPHPickerSaveImageToPathOperation.h b/example/ios/Pods/Headers/Public/image_picker_ios/FLTPHPickerSaveImageToPathOperation.h
new file mode 120000
index 0000000..1f17fef
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/image_picker_ios/FLTPHPickerSaveImageToPathOperation.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTPHPickerSaveImageToPathOperation.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/image_picker_ios/image_picker_ios-umbrella.h b/example/ios/Pods/Headers/Public/image_picker_ios/image_picker_ios-umbrella.h
new file mode 120000
index 0000000..b233980
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/image_picker_ios/image_picker_ios-umbrella.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios-umbrella.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/image_picker_ios/messages.g.h b/example/ios/Pods/Headers/Public/image_picker_ios/messages.g.h
new file mode 120000
index 0000000..57116c8
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/image_picker_ios/messages.g.h
@@ -0,0 +1 @@
+../../../../.symlinks/plugins/image_picker_ios/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/messages.g.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/path_provider_foundation/path_provider_foundation-umbrella.h b/example/ios/Pods/Headers/Public/path_provider_foundation/path_provider_foundation-umbrella.h
new file mode 120000
index 0000000..f83361e
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/path_provider_foundation/path_provider_foundation-umbrella.h
@@ -0,0 +1 @@
+../../../Target Support Files/path_provider_foundation/path_provider_foundation-umbrella.h
\ No newline at end of file
diff --git a/example/ios/Pods/Headers/Public/path_provider_foundation/path_provider_foundation.modulemap b/example/ios/Pods/Headers/Public/path_provider_foundation/path_provider_foundation.modulemap
new file mode 120000
index 0000000..707c655
--- /dev/null
+++ b/example/ios/Pods/Headers/Public/path_provider_foundation/path_provider_foundation.modulemap
@@ -0,0 +1 @@
+../../../Target Support Files/path_provider_foundation/path_provider_foundation.modulemap
\ No newline at end of file
diff --git a/example/ios/Pods/Local Podspecs/Flutter.podspec.json b/example/ios/Pods/Local Podspecs/Flutter.podspec.json
new file mode 100644
index 0000000..fbd4762
--- /dev/null
+++ b/example/ios/Pods/Local Podspecs/Flutter.podspec.json
@@ -0,0 +1,20 @@
+{
+ "name": "Flutter",
+ "version": "1.0.0",
+ "summary": "A UI toolkit for beautiful and fast apps.",
+ "homepage": "https://flutter.dev",
+ "license": {
+ "type": "BSD"
+ },
+ "authors": {
+ "Flutter Dev Team": "flutter-dev@googlegroups.com"
+ },
+ "source": {
+ "git": "https://github.com/flutter/engine",
+ "tag": "1.0.0"
+ },
+ "platforms": {
+ "ios": "12.0"
+ },
+ "vendored_frameworks": "path/to/nothing"
+}
diff --git a/example/ios/Pods/Local Podspecs/flutter_zip_archive.podspec.json b/example/ios/Pods/Local Podspecs/flutter_zip_archive.podspec.json
new file mode 100644
index 0000000..3aafec4
--- /dev/null
+++ b/example/ios/Pods/Local Podspecs/flutter_zip_archive.podspec.json
@@ -0,0 +1,29 @@
+{
+ "name": "flutter_zip_archive",
+ "version": "0.0.1",
+ "summary": "A new Flutter plugin.",
+ "description": "A new Flutter plugin.",
+ "homepage": "http://example.com",
+ "license": {
+ "file": "../LICENSE"
+ },
+ "authors": {
+ "Your Company": "email@example.com"
+ },
+ "source": {
+ "path": "."
+ },
+ "source_files": "Classes/**/*",
+ "public_header_files": "Classes/**/*.h",
+ "dependencies": {
+ "Flutter": [
+
+ ],
+ "SSZipArchive": [
+
+ ]
+ },
+ "platforms": {
+ "ios": "8.0"
+ }
+}
diff --git a/example/ios/Pods/Local Podspecs/image_picker_ios.podspec.json b/example/ios/Pods/Local Podspecs/image_picker_ios.podspec.json
new file mode 100644
index 0000000..d3aad25
--- /dev/null
+++ b/example/ios/Pods/Local Podspecs/image_picker_ios.podspec.json
@@ -0,0 +1,37 @@
+{
+ "name": "image_picker_ios",
+ "version": "0.0.1",
+ "summary": "Flutter plugin that shows an image picker.",
+ "description": "A Flutter plugin for picking images from the image library, and taking new pictures with the camera.\nDownloaded by pub (not CocoaPods).",
+ "homepage": "https://github.com/flutter/packages",
+ "license": {
+ "type": "BSD",
+ "file": "../LICENSE"
+ },
+ "authors": {
+ "Flutter Dev Team": "flutter-dev@googlegroups.com"
+ },
+ "source": {
+ "http": "https://github.com/flutter/packages/tree/main/packages/image_picker_ios"
+ },
+ "documentation_url": "https://pub.dev/packages/image_picker_ios",
+ "source_files": "image_picker_ios/Sources/image_picker_ios/**/*.{h,m}",
+ "public_header_files": "image_picker_ios/Sources/image_picker_ios/**/*.h",
+ "module_map": "image_picker_ios/Sources/image_picker_ios/include/ImagePickerPlugin.modulemap",
+ "dependencies": {
+ "Flutter": [
+
+ ]
+ },
+ "platforms": {
+ "ios": "12.0"
+ },
+ "pod_target_xcconfig": {
+ "DEFINES_MODULE": "YES"
+ },
+ "resource_bundles": {
+ "image_picker_ios_privacy": [
+ "image_picker_ios/Sources/image_picker_ios/Resources/PrivacyInfo.xcprivacy"
+ ]
+ }
+}
diff --git a/example/ios/Pods/Local Podspecs/path_provider_foundation.podspec.json b/example/ios/Pods/Local Podspecs/path_provider_foundation.podspec.json
new file mode 100644
index 0000000..f28fa3b
--- /dev/null
+++ b/example/ios/Pods/Local Podspecs/path_provider_foundation.podspec.json
@@ -0,0 +1,47 @@
+{
+ "name": "path_provider_foundation",
+ "version": "0.0.1",
+ "summary": "An iOS and macOS implementation of the path_provider plugin.",
+ "description": "An iOS and macOS implementation of the Flutter plugin for getting commonly used locations on the filesystem.",
+ "homepage": "https://github.com/flutter/packages/tree/main/packages/path_provider/path_provider_foundation",
+ "license": {
+ "type": "BSD",
+ "file": "../LICENSE"
+ },
+ "authors": {
+ "Flutter Dev Team": "flutter-dev@googlegroups.com"
+ },
+ "source": {
+ "http": "https://github.com/flutter/packages/tree/main/packages/path_provider/path_provider_foundation"
+ },
+ "source_files": "path_provider_foundation/Sources/path_provider_foundation/**/*.swift",
+ "ios": {
+ "dependencies": {
+ "Flutter": [
+
+ ]
+ },
+ "xcconfig": {
+ "LIBRARY_SEARCH_PATHS": "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift",
+ "LD_RUNPATH_SEARCH_PATHS": "/usr/lib/swift"
+ }
+ },
+ "osx": {
+ "dependencies": {
+ "FlutterMacOS": [
+
+ ]
+ }
+ },
+ "platforms": {
+ "ios": "12.0",
+ "osx": "10.14"
+ },
+ "swift_versions": "5.0",
+ "resource_bundles": {
+ "path_provider_foundation_privacy": [
+ "path_provider_foundation/Sources/path_provider_foundation/Resources/PrivacyInfo.xcprivacy"
+ ]
+ },
+ "swift_version": "5.0"
+}
diff --git a/example/ios/Pods/Manifest.lock b/example/ios/Pods/Manifest.lock
new file mode 100644
index 0000000..53b0785
--- /dev/null
+++ b/example/ios/Pods/Manifest.lock
@@ -0,0 +1,42 @@
+PODS:
+ - Flutter (1.0.0)
+ - flutter_zip_archive (0.0.1):
+ - Flutter
+ - SSZipArchive
+ - image_picker_ios (0.0.1):
+ - Flutter
+ - path_provider_foundation (0.0.1):
+ - Flutter
+ - FlutterMacOS
+ - SSZipArchive (2.4.3)
+
+DEPENDENCIES:
+ - Flutter (from `Flutter`)
+ - flutter_zip_archive (from `.symlinks/plugins/flutter_zip_archive/ios`)
+ - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
+ - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
+
+SPEC REPOS:
+ trunk:
+ - SSZipArchive
+
+EXTERNAL SOURCES:
+ Flutter:
+ :path: Flutter
+ flutter_zip_archive:
+ :path: ".symlinks/plugins/flutter_zip_archive/ios"
+ image_picker_ios:
+ :path: ".symlinks/plugins/image_picker_ios/ios"
+ path_provider_foundation:
+ :path: ".symlinks/plugins/path_provider_foundation/darwin"
+
+SPEC CHECKSUMS:
+ Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
+ flutter_zip_archive: 0720df756f6e5eee393e52da24877d0b7bb90fab
+ image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
+ path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
+ SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
+
+PODFILE CHECKSUM: cf0c950f7e9a456b4e325f5b8fc0f98906a3705a
+
+COCOAPODS: 1.16.2
diff --git a/example/ios/Pods/Pods.xcodeproj/project.pbxproj b/example/ios/Pods/Pods.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..3838445
--- /dev/null
+++ b/example/ios/Pods/Pods.xcodeproj/project.pbxproj
@@ -0,0 +1,2799 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 54;
+ objects = {
+
+/* Begin PBXAggregateTarget section */
+ 1EFDDC32A34D56D411E640A81DCD9E73 /* Flutter */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = 94078A06C17E946ADC1F2C06726219E5 /* Build configuration list for PBXAggregateTarget "Flutter" */;
+ buildPhases = (
+ );
+ dependencies = (
+ );
+ name = Flutter;
+ };
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+ 0192BB9B3BC3A59C1D31AD402E61043F /* mz_strm_os_posix.c in Sources */ = {isa = PBXBuildFile; fileRef = AE46C19BAF608ECBFE3A261E55A55146 /* mz_strm_os_posix.c */; };
+ 06B24173AC8ECEDC8E89DFD65AA55B14 /* mz_zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E1683B145EF5BCFF5482D4CD507DF88 /* mz_zip.c */; };
+ 0726FD424B30BA6D4953EBBE43186222 /* mz_strm_buf.h in Headers */ = {isa = PBXBuildFile; fileRef = 12C1AA8FDF002ECA9A168A7FD3BBA23E /* mz_strm_buf.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 0DE0005A94CFDFAA880537475881D042 /* FLTImagePickerPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 709F18E4309532A00BD0112361BEE2EF /* FLTImagePickerPlugin.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 0F005B941A20C60BD12B3353442823F2 /* FLTImagePickerPhotoAssetUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 067AFCF9FC0C8C24434A57F462A58D8A /* FLTImagePickerPhotoAssetUtil.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 16E0CF48AEA2E552D793E4CEFDF01E03 /* mz_crypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 140776F73E38427DC826D566FC1E72BE /* mz_crypt.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 1A0D211BBEE177C411B300863AECAE8A /* FLTImagePickerMetaDataUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = AE0B441E96C7552881B83BCEC18DBF4B /* FLTImagePickerMetaDataUtil.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 1B014EF7EB190969927DEA276BC6B23C /* SSZipArchive-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D797162278B1BC724D7DE9D436D831AD /* SSZipArchive-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 1F925986C363812371A165656DA4D93F /* FLTImagePickerPlugin_Test.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D3A665945D0563245B5CC659D2EC58C /* FLTImagePickerPlugin_Test.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 21B10195ABE74EAF434F3F7D47A6D4AE /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = BCEBE7D9429E751E0A99672605582CB4 /* PrivacyInfo.xcprivacy */; };
+ 22449638C213B5879C5B0B4252349AC6 /* messages.g.h in Headers */ = {isa = PBXBuildFile; fileRef = D894AC797DD0D23757AD88B7711E8AF4 /* messages.g.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 26197AB013F17A90E969D40F21F2E5E7 /* FLTImagePickerMetaDataUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 97ADF2784597063A17C58E45F2C2A416 /* FLTImagePickerMetaDataUtil.m */; };
+ 282FE044A7AC0F5E2C8F0AF3BAAF4995 /* FLTImagePickerImageUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C5931DDBC42B9AEAB6AFFFAF36B2478 /* FLTImagePickerImageUtil.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 2CFEF86D4F0B45C07E56F11DE92AA58B /* messages.g.m in Sources */ = {isa = PBXBuildFile; fileRef = F3DB0289041E933D8516A59825CF0E72 /* messages.g.m */; };
+ 3C665714AF5342FDE72D5FFBAFA00552 /* messages.g.swift in Sources */ = {isa = PBXBuildFile; fileRef = F915055814568C413135E9700435C981 /* messages.g.swift */; };
+ 3D90816169AAE962AD743B9601F824CD /* mz_strm_mem.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A10E12604CB5C2D813D323D1D92B021 /* mz_strm_mem.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 434EC36C5177F72BF11115258608DAD9 /* mz_zip.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E3FFEDA320B82FC971B0FD2DA459F92 /* mz_zip.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 471E735F2F2DEE1682B67FCDEBD5525B /* mz_crypt_apple.c in Sources */ = {isa = PBXBuildFile; fileRef = 8235FDE1F794FE1F3260A46F04BAE115 /* mz_crypt_apple.c */; };
+ 4C77C2E3005AF4EEAF3C854CB70DE8DB /* mz_strm_split.h in Headers */ = {isa = PBXBuildFile; fileRef = CB01A475948313A6E0E57AF9EE9F6A70 /* mz_strm_split.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 5062CC339370B5ADC7009EA190F6C243 /* Pods-Runner-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 98FF0987742F984F89345FC7E0684408 /* Pods-Runner-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 550E15099AECC9BC8F323C48776B4734 /* mz_os.c in Sources */ = {isa = PBXBuildFile; fileRef = 992B637598E94EF7B9929AC99D658C95 /* mz_os.c */; };
+ 55816DD001D0AA0ECB507615972E6B09 /* FLTImagePickerPhotoAssetUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 94B07FEAE5C1BF297EEBCAE2DCF763E1 /* FLTImagePickerPhotoAssetUtil.m */; };
+ 60E71E745458AF617C07B8F7F51214BD /* image_picker_ios-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CD2C64EC2B10B70C6AE18B29A5AEC62 /* image_picker_ios-dummy.m */; };
+ 63ED7BD0781FCECB07CADC10155E0590 /* SSZipArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = E2412D89F4357131B08AB7522D938AF5 /* SSZipArchive.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 646C51151B4A85B239DC529A58F7C0F4 /* mz_strm_pkcrypt.c in Sources */ = {isa = PBXBuildFile; fileRef = DBE66489982C4D1E2D6B92BDA3537A4F /* mz_strm_pkcrypt.c */; };
+ 66EACCCF47434ED3AB231E350BA3E9E0 /* mz.h in Headers */ = {isa = PBXBuildFile; fileRef = 39447AE6C30B64C6A84908E6C646DE06 /* mz.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 6C2811D8C830C6F00017A5ED41C14F67 /* mz_zip_rw.c in Sources */ = {isa = PBXBuildFile; fileRef = 25A5B6154FD369610C5DFF5DF65D5295 /* mz_zip_rw.c */; };
+ 71896C684AD84CB7F4B06DE4734947FE /* PathProviderPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93A3805C91988CA261FEAE5F5DA3D97B /* PathProviderPlugin.swift */; };
+ 75DCDE92C2AB8A88200BEC7988D31C2C /* mz_os_posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 72C645BF4E7B7ED9A6B11CC0B506EB4B /* mz_os_posix.c */; };
+ 77B3DAD6979ED9910299B33B1F9A3BFC /* mz_strm_mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A171354B2B1BA93EF7DEFFCBB790477 /* mz_strm_mem.c */; };
+ 819B3A2ECFD498AD81599AB11612D616 /* mz_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = 16E18E7D08B76D974DD42CFCF4F7165C /* mz_compat.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 876816E2BD73E81B54660A2B2602F906 /* mz_strm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4262217E492BAB38179734C77694A382 /* mz_strm.c */; };
+ 8AE8A3427C00305B52EA9D00953E3B98 /* flutter_zip_archive-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E4FCB7CBC4ED76DE82325CF594B542CF /* flutter_zip_archive-dummy.m */; };
+ 8BAF240113D4B39583D15B2B2D0EB81E /* mz_strm_wzaes.c in Sources */ = {isa = PBXBuildFile; fileRef = AF5520E9DC8EAFAFBEB3FF39E2B6B824 /* mz_strm_wzaes.c */; };
+ 8FB2CBCFCAE38820BC13123E51B34E04 /* mz_strm_buf.c in Sources */ = {isa = PBXBuildFile; fileRef = F1E5C2958C967B4F3F2C3D049D0488D7 /* mz_strm_buf.c */; };
+ 91B7AEB0D5A36D5C02BEE073F273356E /* FlutterZipArchivePlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D33587834896F778D61ED56852E782A /* FlutterZipArchivePlugin.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 931A7AB36F8ABEC096488088BFF9F493 /* mz_strm.h in Headers */ = {isa = PBXBuildFile; fileRef = AEEA9F462777A969324BA2658C7F1127 /* mz_strm.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 93E2AFE812DAB37F6091635672C243BC /* path_provider_foundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 770186A4CFB5E3E6389C70EA531A5CA0 /* path_provider_foundation-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ AF351EFE2094088F8790557786CF31F8 /* mz_compat.c in Sources */ = {isa = PBXBuildFile; fileRef = 469BDCEA09E97D5798D6DDC30C01B03E /* mz_compat.c */; };
+ B2B03A67A856155E9C97D8789A14DCB0 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = D7D3CBA6A138DA7AC7571F2ABF928263 /* PrivacyInfo.xcprivacy */; };
+ B9B6975C3190E6A4F26340EF8DC6984F /* mz_os.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B93CF1983A6E099ECD1D3602A9C717A /* mz_os.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ BA6E799C9BE2570442050507F3EDE21F /* SSZipArchive-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DA232AA1C887644730470CAB01C6B6E5 /* SSZipArchive-dummy.m */; };
+ BAC8DCAC5526DDDFA2F67FB4847E6832 /* image_picker_ios-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 103FF19F34B7AED6A0CBBC74BB25E40B /* image_picker_ios-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ C865F14E7408C4999313606383EC72D0 /* mz_strm_wzaes.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ACFE43EE056FEEFEF34BDE7018DFFFF /* mz_strm_wzaes.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ CBB5E1014FBF20396CCC331BEFE8D5AA /* mz_strm_zlib.c in Sources */ = {isa = PBXBuildFile; fileRef = EBDAD1C3CC0465744ADBD8D65715A4B5 /* mz_strm_zlib.c */; };
+ D19F4D5D0225A7C4347D5771D9F954BD /* FLTImagePickerPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 39D33BA8E235006E17873CAD05228874 /* FLTImagePickerPlugin.m */; };
+ D420F9BB5AF33832432457F0E4453045 /* SSZipCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 60CECCF5D210691DFC111FB05E37872B /* SSZipCommon.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ D59034B379A06B9595AE3AE84C34ABC0 /* mz_strm_os.h in Headers */ = {isa = PBXBuildFile; fileRef = DD0382BA266BAEC1CD021B1F0A8BF6CD /* mz_strm_os.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ D8F2EA319AB00D3CFA57AD207D813FEF /* mz_strm_split.c in Sources */ = {isa = PBXBuildFile; fileRef = 845CC09BE46F79E82C14446D6AB4FF9F /* mz_strm_split.c */; };
+ DC249EFACF88D684359E95FBF6E0066E /* mz_strm_zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = F4EC6EBB4C1222EE0ECF52722419D227 /* mz_strm_zlib.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ E552B5094CD15C1C3C072997E6297080 /* SSZipArchive.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DF0F2EAF67E2AABC8EF321105441FEA /* SSZipArchive.m */; };
+ E7E3A346B2D08A0E7915A8923510B252 /* mz_zip_rw.h in Headers */ = {isa = PBXBuildFile; fileRef = 16E839C8ADDF9AA566CC73A1CFA93F24 /* mz_zip_rw.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ ECC89551CC74B2C246409BF811FA7093 /* FLTImagePickerImageUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = EEDDA1BEF4DCC4F15AA1DD18FED35185 /* FLTImagePickerImageUtil.m */; };
+ EE5381408A40FD39E00B742E7D33269D /* FLTPHPickerSaveImageToPathOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FAD94D323A5738B1BE2F02B71040439 /* FLTPHPickerSaveImageToPathOperation.m */; };
+ F000C5D6B12A26D2175D104D7734FB2C /* mz_crypt.c in Sources */ = {isa = PBXBuildFile; fileRef = 24ECDBE9B26A33172E58094D02056633 /* mz_crypt.c */; };
+ F1238BE7B56A8E019FF9DD839A888D68 /* mz_strm_pkcrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C2E066FF80424B701668B2D77C560BD /* mz_strm_pkcrypt.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ F24496385662469D1EE2E39E85765007 /* ZipArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = 21B82B6050EDF009E9F30A4CCBE6B724 /* ZipArchive.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ F3DBE7CCD5C5E2704963FB8CA7D0FD81 /* FLTPHPickerSaveImageToPathOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 883DD6C406A539B3BB1859251D3F7E63 /* FLTPHPickerSaveImageToPathOperation.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ F84C0DCBD29CD0DD24B675C56D0CCD58 /* Pods-Runner-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 840D0754C1B8831C9E84C7A7777BF023 /* Pods-Runner-dummy.m */; };
+ FCFD96DD03A6347A2ED70D1601A5C4AE /* FlutterZipArchivePlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 082D546C6165E063230F10157D155E58 /* FlutterZipArchivePlugin.m */; };
+ FFF7B54CBF6B2E14645E5433FB8B1CE3 /* path_provider_foundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D64E456DA5B76A11960FCE200795B399 /* path_provider_foundation-dummy.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 1C6D73177350C6FA73948AC00A3DA25C /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 90EC34F1BB6A4F41C55C258475A7E651;
+ remoteInfo = flutter_zip_archive;
+ };
+ 5277806C7E4F7A9929BCBABEF8C31608 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = F60E38364AFF5E1349FF07415B944396;
+ remoteInfo = SSZipArchive;
+ };
+ 5352423135DFD0ED0C0AB93CA143E1AE /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 1EFDDC32A34D56D411E640A81DCD9E73;
+ remoteInfo = Flutter;
+ };
+ 7505BF6DFD02F82267E2AED7E06DEB34 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 1EFDDC32A34D56D411E640A81DCD9E73;
+ remoteInfo = Flutter;
+ };
+ 95AB7DA0A04A84289AAD37E5B981E401 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 1EFDDC32A34D56D411E640A81DCD9E73;
+ remoteInfo = Flutter;
+ };
+ 9FBF5A48CDF9B6D8C0AC4CEC488976EB /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = F60E38364AFF5E1349FF07415B944396;
+ remoteInfo = SSZipArchive;
+ };
+ A3371431D724C1CD78E3CD5695DF82F8 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 56F581DDCB0A032454E604885E17AE3C;
+ remoteInfo = path_provider_foundation;
+ };
+ B4A16B3509BFAB92A7328F84B9DF6B63 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 845DF30C6C93A1F35C6DCEBAFECA8F8A;
+ remoteInfo = image_picker_ios;
+ };
+ FB666CDF21EB3604328DE9218749F0D6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = CACE6618E7996464E38687E13F67D945;
+ remoteInfo = "path_provider_foundation-path_provider_foundation_privacy";
+ };
+ FD6C345D0107FBC705F3DEA05839FC5A /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = A450BF39E3E5256209A256E278D71BFD;
+ remoteInfo = "image_picker_ios-image_picker_ios_privacy";
+ };
+ FF13E394381A8B43931D45A67230039D /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 1EFDDC32A34D56D411E640A81DCD9E73;
+ remoteInfo = Flutter;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 0606E77F294E1D7BC110559CB2C788C7 /* ResourceBundle-image_picker_ios_privacy-image_picker_ios-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-image_picker_ios_privacy-image_picker_ios-Info.plist"; sourceTree = ""; };
+ 067AFCF9FC0C8C24434A57F462A58D8A /* FLTImagePickerPhotoAssetUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLTImagePickerPhotoAssetUtil.h; path = "../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerPhotoAssetUtil.h"; sourceTree = ""; };
+ 082D546C6165E063230F10157D155E58 /* FlutterZipArchivePlugin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FlutterZipArchivePlugin.m; path = ../../../../../../../ios/Classes/FlutterZipArchivePlugin.m; sourceTree = ""; };
+ 0D3A665945D0563245B5CC659D2EC58C /* FLTImagePickerPlugin_Test.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLTImagePickerPlugin_Test.h; path = "../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerPlugin_Test.h"; sourceTree = ""; };
+ 0E1683B145EF5BCFF5482D4CD507DF88 /* mz_zip.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_zip.c; path = SSZipArchive/minizip/mz_zip.c; sourceTree = ""; };
+ 103FF19F34B7AED6A0CBBC74BB25E40B /* image_picker_ios-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "image_picker_ios-umbrella.h"; path = "../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios-umbrella.h"; sourceTree = ""; };
+ 12C1AA8FDF002ECA9A168A7FD3BBA23E /* mz_strm_buf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_strm_buf.h; path = SSZipArchive/minizip/mz_strm_buf.h; sourceTree = ""; };
+ 13BB4A0B3CA6FA687133605FFD01F357 /* path_provider_foundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "path_provider_foundation-prefix.pch"; sourceTree = ""; };
+ 140776F73E38427DC826D566FC1E72BE /* mz_crypt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_crypt.h; path = SSZipArchive/minizip/mz_crypt.h; sourceTree = ""; };
+ 158505A03770AF2DB76FF314D677B516 /* SSZipArchive-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SSZipArchive-prefix.pch"; sourceTree = ""; };
+ 16E18E7D08B76D974DD42CFCF4F7165C /* mz_compat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_compat.h; path = SSZipArchive/minizip/mz_compat.h; sourceTree = ""; };
+ 16E839C8ADDF9AA566CC73A1CFA93F24 /* mz_zip_rw.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_zip_rw.h; path = SSZipArchive/minizip/mz_zip_rw.h; sourceTree = ""; };
+ 1A10E12604CB5C2D813D323D1D92B021 /* mz_strm_mem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_strm_mem.h; path = SSZipArchive/minizip/mz_strm_mem.h; sourceTree = ""; };
+ 1E3FFEDA320B82FC971B0FD2DA459F92 /* mz_zip.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_zip.h; path = SSZipArchive/minizip/mz_zip.h; sourceTree = ""; };
+ 217547AD3D570440139C696437026792 /* flutter_zip_archive.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = flutter_zip_archive.podspec; path = ../../../../../../ios/flutter_zip_archive.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+ 21B82B6050EDF009E9F30A4CCBE6B724 /* ZipArchive.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ZipArchive.h; path = SSZipArchive/include/ZipArchive.h; sourceTree = ""; };
+ 2299047366EA7545B2EAF71D0FB66359 /* flutter_zip_archive.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = flutter_zip_archive.debug.xcconfig; sourceTree = ""; };
+ 2385FC5B4FBB60D7FA9CCDDE76795971 /* Flutter.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Flutter.debug.xcconfig; sourceTree = ""; };
+ 24ECDBE9B26A33172E58094D02056633 /* mz_crypt.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_crypt.c; path = SSZipArchive/minizip/mz_crypt.c; sourceTree = ""; };
+ 25A5B6154FD369610C5DFF5DF65D5295 /* mz_zip_rw.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_zip_rw.c; path = SSZipArchive/minizip/mz_zip_rw.c; sourceTree = ""; };
+ 2C5931DDBC42B9AEAB6AFFFAF36B2478 /* FLTImagePickerImageUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLTImagePickerImageUtil.h; path = "../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerImageUtil.h"; sourceTree = ""; };
+ 341C2BD787A5690B04A8F1D36334DA98 /* flutter_zip_archive */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = flutter_zip_archive; path = libflutter_zip_archive.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ 39447AE6C30B64C6A84908E6C646DE06 /* mz.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz.h; path = SSZipArchive/minizip/mz.h; sourceTree = ""; };
+ 39D33BA8E235006E17873CAD05228874 /* FLTImagePickerPlugin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLTImagePickerPlugin.m; path = "../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerPlugin.m"; sourceTree = ""; };
+ 3D4D3DC9F2C625816586F125624834D0 /* image_picker_ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = image_picker_ios.debug.xcconfig; sourceTree = ""; };
+ 3DBD4BADE27F8B91024E4B4B4DD75DB5 /* path_provider_foundation-path_provider_foundation_privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "path_provider_foundation-path_provider_foundation_privacy"; path = path_provider_foundation_privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3FAD94D323A5738B1BE2F02B71040439 /* FLTPHPickerSaveImageToPathOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLTPHPickerSaveImageToPathOperation.m; path = "../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/FLTPHPickerSaveImageToPathOperation.m"; sourceTree = ""; };
+ 3FD43EC7081C2C90F8E6F58F55FECEBD /* SSZipArchive.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SSZipArchive.modulemap; sourceTree = ""; };
+ 4262217E492BAB38179734C77694A382 /* mz_strm.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_strm.c; path = SSZipArchive/minizip/mz_strm.c; sourceTree = ""; };
+ 439236E296E8D08D89FD7B07C053DFBA /* image_picker_ios.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = image_picker_ios.modulemap; sourceTree = ""; };
+ 469BDCEA09E97D5798D6DDC30C01B03E /* mz_compat.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_compat.c; path = SSZipArchive/minizip/mz_compat.c; sourceTree = ""; };
+ 4CC30F89F4EA2AD764170CD84C70E5E1 /* path_provider_foundation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = path_provider_foundation.release.xcconfig; sourceTree = ""; };
+ 4DF0F2EAF67E2AABC8EF321105441FEA /* SSZipArchive.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SSZipArchive.m; path = SSZipArchive/SSZipArchive.m; sourceTree = ""; };
+ 4FE1C6CD74E6C15C72E75C3C1FEA98BB /* Flutter.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Flutter.release.xcconfig; sourceTree = ""; };
+ 51426DEED975E10237DEFF6AD33A0171 /* ResourceBundle-path_provider_foundation_privacy-path_provider_foundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-path_provider_foundation_privacy-path_provider_foundation-Info.plist"; sourceTree = ""; };
+ 53AF3AF6DD7CF1B1E6D7C60883746A1A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ 584170740CE9B7206E96909A68C0A5F3 /* path_provider_foundation.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = path_provider_foundation.podspec; path = "../../../../../../../../.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/darwin/path_provider_foundation.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+ 5B93CF1983A6E099ECD1D3602A9C717A /* mz_os.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_os.h; path = SSZipArchive/minizip/mz_os.h; sourceTree = ""; };
+ 60CECCF5D210691DFC111FB05E37872B /* SSZipCommon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSZipCommon.h; path = SSZipArchive/SSZipCommon.h; sourceTree = ""; };
+ 644471312FE5602F4F4038271385798A /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; name = LICENSE; path = "../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/LICENSE"; sourceTree = ""; };
+ 669E8F25E1897672BDB80B7EB784DA24 /* Pods-Runner */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "Pods-Runner"; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 68DF6F3260591385AC62D1C8BDD71142 /* flutter_zip_archive-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "flutter_zip_archive-prefix.pch"; sourceTree = ""; };
+ 6A171354B2B1BA93EF7DEFFCBB790477 /* mz_strm_mem.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_strm_mem.c; path = SSZipArchive/minizip/mz_strm_mem.c; sourceTree = ""; };
+ 6ACFE43EE056FEEFEF34BDE7018DFFFF /* mz_strm_wzaes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_strm_wzaes.h; path = SSZipArchive/minizip/mz_strm_wzaes.h; sourceTree = ""; };
+ 6D33587834896F778D61ED56852E782A /* FlutterZipArchivePlugin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FlutterZipArchivePlugin.h; path = ../../../../../../../ios/Classes/FlutterZipArchivePlugin.h; sourceTree = ""; };
+ 708CDCBECE19528A113F0606FCF4F7CE /* Pods-Runner.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Runner.modulemap"; sourceTree = ""; };
+ 709F18E4309532A00BD0112361BEE2EF /* FLTImagePickerPlugin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLTImagePickerPlugin.h; path = "../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerPlugin.h"; sourceTree = ""; };
+ 72C645BF4E7B7ED9A6B11CC0B506EB4B /* mz_os_posix.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_os_posix.c; path = SSZipArchive/minizip/mz_os_posix.c; sourceTree = ""; };
+ 73DCC14566E642D9CCAD72545235B838 /* ImagePickerPlugin.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = ImagePickerPlugin.modulemap; path = "../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/ImagePickerPlugin.modulemap"; sourceTree = ""; };
+ 768975E636D1D2FB85622FB67DB04E5A /* image_picker_ios */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = image_picker_ios; path = libimage_picker_ios.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ 770186A4CFB5E3E6389C70EA531A5CA0 /* path_provider_foundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "path_provider_foundation-umbrella.h"; sourceTree = ""; };
+ 7C64684685E94ADC2FCA3B5985315959 /* Pods-Runner-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Runner-acknowledgements.plist"; sourceTree = ""; };
+ 7CD2C64EC2B10B70C6AE18B29A5AEC62 /* image_picker_ios-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "image_picker_ios-dummy.m"; sourceTree = ""; };
+ 7DA0F6D59470A9CDD3582043D2861F7F /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; name = LICENSE; path = "../../../../../../../../.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/LICENSE"; sourceTree = ""; };
+ 7F76DED38DDBDEDE2413B263B130FF71 /* flutter_zip_archive.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = flutter_zip_archive.release.xcconfig; sourceTree = ""; };
+ 8235FDE1F794FE1F3260A46F04BAE115 /* mz_crypt_apple.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_crypt_apple.c; path = SSZipArchive/minizip/mz_crypt_apple.c; sourceTree = ""; };
+ 840D0754C1B8831C9E84C7A7777BF023 /* Pods-Runner-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Runner-dummy.m"; sourceTree = ""; };
+ 845CC09BE46F79E82C14446D6AB4FF9F /* mz_strm_split.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_strm_split.c; path = SSZipArchive/minizip/mz_strm_split.c; sourceTree = ""; };
+ 883DD6C406A539B3BB1859251D3F7E63 /* FLTPHPickerSaveImageToPathOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLTPHPickerSaveImageToPathOperation.h; path = "../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTPHPickerSaveImageToPathOperation.h"; sourceTree = ""; };
+ 8C96D5272304FF91397AE6FF1D7F1D4F /* image_picker_ios-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "image_picker_ios-prefix.pch"; sourceTree = ""; };
+ 91B23470DEB9A986332BEB5034234BC7 /* SSZipArchive */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = SSZipArchive; path = libSSZipArchive.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ 93A3805C91988CA261FEAE5F5DA3D97B /* PathProviderPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PathProviderPlugin.swift; path = "../../../../../../../../../../../.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/darwin/path_provider_foundation/Sources/path_provider_foundation/PathProviderPlugin.swift"; sourceTree = ""; };
+ 94B07FEAE5C1BF297EEBCAE2DCF763E1 /* FLTImagePickerPhotoAssetUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLTImagePickerPhotoAssetUtil.m; path = "../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerPhotoAssetUtil.m"; sourceTree = ""; };
+ 97ADF2784597063A17C58E45F2C2A416 /* FLTImagePickerMetaDataUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLTImagePickerMetaDataUtil.m; path = "../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerMetaDataUtil.m"; sourceTree = ""; };
+ 98FF0987742F984F89345FC7E0684408 /* Pods-Runner-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Runner-umbrella.h"; sourceTree = ""; };
+ 992B637598E94EF7B9929AC99D658C95 /* mz_os.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_os.c; path = SSZipArchive/minizip/mz_os.c; sourceTree = ""; };
+ 9C2E066FF80424B701668B2D77C560BD /* mz_strm_pkcrypt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_strm_pkcrypt.h; path = SSZipArchive/minizip/mz_strm_pkcrypt.h; sourceTree = ""; };
+ 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+ A3B27A72CBE2C688B0471E28255E900C /* SSZipArchive.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SSZipArchive.debug.xcconfig; sourceTree = ""; };
+ A921150CCFA681F261E38B07F3A17837 /* Pods-Runner-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Runner-acknowledgements.markdown"; sourceTree = ""; };
+ AB2A8D89ADB96D5E82D66CFF5F3798FA /* image_picker_ios.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = image_picker_ios.podspec; path = "../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+ AE0B441E96C7552881B83BCEC18DBF4B /* FLTImagePickerMetaDataUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLTImagePickerMetaDataUtil.h; path = "../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/FLTImagePickerMetaDataUtil.h"; sourceTree = ""; };
+ AE157A33FEF959A214796BFF348717F6 /* path_provider_foundation */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = path_provider_foundation; path = libpath_provider_foundation.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ AE46C19BAF608ECBFE3A261E55A55146 /* mz_strm_os_posix.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_strm_os_posix.c; path = SSZipArchive/minizip/mz_strm_os_posix.c; sourceTree = ""; };
+ AEEA9F462777A969324BA2658C7F1127 /* mz_strm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_strm.h; path = SSZipArchive/minizip/mz_strm.h; sourceTree = ""; };
+ AF5520E9DC8EAFAFBEB3FF39E2B6B824 /* mz_strm_wzaes.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_strm_wzaes.c; path = SSZipArchive/minizip/mz_strm_wzaes.c; sourceTree = ""; };
+ B18DD32EAE0DE5C4F096D91B809FD483 /* path_provider_foundation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = path_provider_foundation.debug.xcconfig; sourceTree = ""; };
+ BCEBE7D9429E751E0A99672605582CB4 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = "../../../../../../../../../../../../.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/darwin/path_provider_foundation/Sources/path_provider_foundation/Resources/PrivacyInfo.xcprivacy"; sourceTree = ""; };
+ CB01A475948313A6E0E57AF9EE9F6A70 /* mz_strm_split.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_strm_split.h; path = SSZipArchive/minizip/mz_strm_split.h; sourceTree = ""; };
+ D64E456DA5B76A11960FCE200795B399 /* path_provider_foundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "path_provider_foundation-dummy.m"; sourceTree = ""; };
+ D797162278B1BC724D7DE9D436D831AD /* SSZipArchive-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SSZipArchive-umbrella.h"; sourceTree = ""; };
+ D7D3CBA6A138DA7AC7571F2ABF928263 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = "../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/Resources/PrivacyInfo.xcprivacy"; sourceTree = ""; };
+ D894AC797DD0D23757AD88B7711E8AF4 /* messages.g.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = messages.g.h; path = "../../../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/include/image_picker_ios/messages.g.h"; sourceTree = ""; };
+ DA232AA1C887644730470CAB01C6B6E5 /* SSZipArchive-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SSZipArchive-dummy.m"; sourceTree = ""; };
+ DA4E0315C7C9BA3E35027274EF1FA4E3 /* path_provider_foundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = path_provider_foundation.modulemap; sourceTree = ""; };
+ DBE66489982C4D1E2D6B92BDA3537A4F /* mz_strm_pkcrypt.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_strm_pkcrypt.c; path = SSZipArchive/minizip/mz_strm_pkcrypt.c; sourceTree = ""; };
+ DD0382BA266BAEC1CD021B1F0A8BF6CD /* mz_strm_os.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_strm_os.h; path = SSZipArchive/minizip/mz_strm_os.h; sourceTree = ""; };
+ E2412D89F4357131B08AB7522D938AF5 /* SSZipArchive.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SSZipArchive.h; path = SSZipArchive/SSZipArchive.h; sourceTree = ""; };
+ E3BC2E4F8C93222C90102645FA30BA6D /* image_picker_ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = image_picker_ios.release.xcconfig; sourceTree = ""; };
+ E4FCB7CBC4ED76DE82325CF594B542CF /* flutter_zip_archive-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "flutter_zip_archive-dummy.m"; sourceTree = ""; };
+ EBDAD1C3CC0465744ADBD8D65715A4B5 /* mz_strm_zlib.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_strm_zlib.c; path = SSZipArchive/minizip/mz_strm_zlib.c; sourceTree = ""; };
+ EBE9BF3E22F65735A1D716F2DBFBA401 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+ EEDDA1BEF4DCC4F15AA1DD18FED35185 /* FLTImagePickerImageUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLTImagePickerImageUtil.m; path = "../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/FLTImagePickerImageUtil.m"; sourceTree = ""; };
+ F0C7EFBFF01CFAAB52BA74E6CB40CE2C /* image_picker_ios-image_picker_ios_privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "image_picker_ios-image_picker_ios_privacy"; path = image_picker_ios_privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
+ F1E5C2958C967B4F3F2C3D049D0488D7 /* mz_strm_buf.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mz_strm_buf.c; path = SSZipArchive/minizip/mz_strm_buf.c; sourceTree = ""; };
+ F3DB0289041E933D8516A59825CF0E72 /* messages.g.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = messages.g.m; path = "../../../../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources/image_picker_ios/messages.g.m"; sourceTree = ""; };
+ F43B80528735A38882F1D084CF2C460C /* Flutter.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Flutter.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+ F4EC6EBB4C1222EE0ECF52722419D227 /* mz_strm_zlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mz_strm_zlib.h; path = SSZipArchive/minizip/mz_strm_zlib.h; sourceTree = ""; };
+ F915055814568C413135E9700435C981 /* messages.g.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = messages.g.swift; path = "../../../../../../../../../../../.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/darwin/path_provider_foundation/Sources/path_provider_foundation/messages.g.swift"; sourceTree = ""; };
+ F98D0085EF3B9B9109CBC5C64C58BBDF /* SSZipArchive.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SSZipArchive.release.xcconfig; sourceTree = ""; };
+ F9D86489E6638235A6B5928C4F86E442 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Runner.release.xcconfig"; sourceTree = ""; };
+ FAF038EEB68D0EC0DAB29C47E30038A8 /* Pods-Runner-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Runner-resources.sh"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 2558E69F5F906900B52771793F417FC6 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3F713938A0EA00D55E1828FD3B738493 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 3F8134C2F82DCA6560431B0D844A29F8 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 4D071340C394C92AD06E860781CA86C2 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 7FE851FEA4B64A032B471684F996BA74 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ A23E9B00FB6D769A35A4FA244ACC3313 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B3D0BCB641402CFFA762DFCC930BEAF2 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 050CCC446AD8397B64791D09CDB713ED /* ios */ = {
+ isa = PBXGroup;
+ children = (
+ B270286653AD4D9D884DA2550893844A /* .symlinks */,
+ );
+ name = ios;
+ path = ios;
+ sourceTree = "";
+ };
+ 061BDC2041CEEFCF9C5D51B863F5C0E3 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ CB9A21A948E2BA51501E33BAAE387026 /* path_provider_foundation */,
+ );
+ name = Sources;
+ path = Sources;
+ sourceTree = "";
+ };
+ 0691C08F65D0B79E160211081DB0C9DE /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ 4DDC995352EAE304934A1100C89ED60B /* .. */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ 079C0A470C450E6C8821EF189823888F /* ios */ = {
+ isa = PBXGroup;
+ children = (
+ 36FDABBC4AB0C57D3E3366A6C9143989 /* image_picker_ios */,
+ );
+ name = ios;
+ path = ios;
+ sourceTree = "";
+ };
+ 0FB6A10962409C0C9499BEC0AE7F142D /* plugins */ = {
+ isa = PBXGroup;
+ children = (
+ 1B9DEB5E3EB46006CDD4F23BF0937F6B /* image_picker_ios */,
+ );
+ name = plugins;
+ path = plugins;
+ sourceTree = "";
+ };
+ 0FF45EB29649E5A212D590382F24ECA5 /* Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ E4FCB7CBC4ED76DE82325CF594B542CF /* flutter_zip_archive-dummy.m */,
+ 68DF6F3260591385AC62D1C8BDD71142 /* flutter_zip_archive-prefix.pch */,
+ 2299047366EA7545B2EAF71D0FB66359 /* flutter_zip_archive.debug.xcconfig */,
+ 7F76DED38DDBDEDE2413B263B130FF71 /* flutter_zip_archive.release.xcconfig */,
+ );
+ name = "Support Files";
+ path = "../../../../Pods/Target Support Files/flutter_zip_archive";
+ sourceTree = "";
+ };
+ 1352E865F13A006E5ED23FF083D07F52 /* flutter_zip_archive */ = {
+ isa = PBXGroup;
+ children = (
+ 4BA3C1EAFD12CE6CCF1EED95F7B235A9 /* .. */,
+ B836B16159999F53B3B4736171C7867C /* Pod */,
+ 0FF45EB29649E5A212D590382F24ECA5 /* Support Files */,
+ );
+ name = flutter_zip_archive;
+ path = ../.symlinks/plugins/flutter_zip_archive/ios;
+ sourceTree = "";
+ };
+ 1452E94B118FED372BC6273707DC270C /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ AD9241FFC6B34963968DB076263E8661 /* image_picker_ios */,
+ );
+ name = Sources;
+ path = Sources;
+ sourceTree = "";
+ };
+ 153A146CA0C4EFCC863255F04B440F53 /* flutter_zip_archive */ = {
+ isa = PBXGroup;
+ children = (
+ 634ABE7F1B5E8F98757A0B77CF5D980C /* example */,
+ );
+ name = flutter_zip_archive;
+ path = flutter_zip_archive;
+ sourceTree = "";
+ };
+ 1B9DEB5E3EB46006CDD4F23BF0937F6B /* image_picker_ios */ = {
+ isa = PBXGroup;
+ children = (
+ F42A4A2E567E25A23E3FE0D274252AFD /* ios */,
+ );
+ name = image_picker_ios;
+ path = image_picker_ios;
+ sourceTree = "";
+ };
+ 1C1569DFD7F21873AA22A4663871F688 /* ios */ = {
+ isa = PBXGroup;
+ children = (
+ E23AA46A8BDA8FB8A198D2C626A0E946 /* .symlinks */,
+ );
+ name = ios;
+ path = ios;
+ sourceTree = "";
+ };
+ 1EB0A114D1B6EC4A0DE29CDF6760882F /* image_picker_ios */ = {
+ isa = PBXGroup;
+ children = (
+ 079C0A470C450E6C8821EF189823888F /* ios */,
+ );
+ name = image_picker_ios;
+ path = image_picker_ios;
+ sourceTree = "";
+ };
+ 201D74558EEBCF43AB3F42BBA3EA1C42 /* ios */ = {
+ isa = PBXGroup;
+ children = (
+ F433B2A002E64BBE97214420F4E9E5D0 /* .symlinks */,
+ );
+ name = ios;
+ path = ios;
+ sourceTree = "";
+ };
+ 20D93F62CFED6DED5456E0E8DF0E267C /* image_picker_ios */ = {
+ isa = PBXGroup;
+ children = (
+ F09C2277063031D3D80AFFCD32B3C05F /* Resources */,
+ );
+ name = image_picker_ios;
+ path = image_picker_ios;
+ sourceTree = "";
+ };
+ 22AFF333E28583DBB11C82AA1148C2FB /* flutter_zip_archive */ = {
+ isa = PBXGroup;
+ children = (
+ E6071BD31E7B58F0563EB2D84D935B34 /* ios */,
+ );
+ name = flutter_zip_archive;
+ path = flutter_zip_archive;
+ sourceTree = "";
+ };
+ 23AF029445B7AA8903D94BDA0FC3D8DE /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ 532CA28822875ADFEB45A95E4E55D60D /* .. */,
+ );
+ name = ..;
+ path = "../../../../../../../../.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.0/darwin/path_provider_foundation/Sources";
+ sourceTree = "";
+ };
+ 26582F6BC95F370ECD4002A515904C00 /* ios */ = {
+ isa = PBXGroup;
+ children = (
+ 5B1ACF143BE2978CAA0E148988201501 /* .symlinks */,
+ );
+ name = ios;
+ path = ios;
+ sourceTree = "";
+ };
+ 283E5EB695104DCEB45224F4F6F0214F /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ 9953E85D09E6A526A8887267B58CEDEB /* .. */,
+ BFD386F038BEC96036E029043332EED0 /* dev */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ 2E2513E2422DA3842532E6DD2D95E015 /* path_provider_foundation */ = {
+ isa = PBXGroup;
+ children = (
+ 23AF029445B7AA8903D94BDA0FC3D8DE /* .. */,
+ D5EA7285BCBC0F5E7D79770CB8F5D40D /* Pod */,
+ CF283A4F9D242FF63C728E266E35715D /* Support Files */,
+ );
+ name = path_provider_foundation;
+ path = ../.symlinks/plugins/path_provider_foundation/darwin;
+ sourceTree = "";
+ };
+ 33AB56846534011043388CEEA763C1A1 /* Classes */ = {
+ isa = PBXGroup;
+ children = (
+ 6D33587834896F778D61ED56852E782A /* FlutterZipArchivePlugin.h */,
+ 082D546C6165E063230F10157D155E58 /* FlutterZipArchivePlugin.m */,
+ );
+ name = Classes;
+ path = Classes;
+ sourceTree = "";
+ };
+ 36FDABBC4AB0C57D3E3366A6C9143989 /* image_picker_ios */ = {
+ isa = PBXGroup;
+ children = (
+ 1452E94B118FED372BC6273707DC270C /* Sources */,
+ );
+ name = image_picker_ios;
+ path = image_picker_ios;
+ sourceTree = "";
+ };
+ 39AF616777DC6EAE47518948A2228751 /* example */ = {
+ isa = PBXGroup;
+ children = (
+ 201D74558EEBCF43AB3F42BBA3EA1C42 /* ios */,
+ );
+ name = example;
+ path = example;
+ sourceTree = "";
+ };
+ 3EE20779ECE61B143A6265D74E3A6C9B /* path_provider_foundation */ = {
+ isa = PBXGroup;
+ children = (
+ F0E631F8F22A2C24EEAB328F71A51A79 /* darwin */,
+ );
+ name = path_provider_foundation;
+ path = path_provider_foundation;
+ sourceTree = "";
+ };
+ 412B8E0AF9543F19EFC5CFB821D0A641 /* path_provider_foundation */ = {
+ isa = PBXGroup;
+ children = (
+ 82A4F9F99BF998D718A91E6127842907 /* darwin */,
+ );
+ name = path_provider_foundation;
+ path = path_provider_foundation;
+ sourceTree = "";
+ };
+ 44A37E02E67D958D193BB2DD29B21A24 /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ 7B766461644193AAF7096EE2E9B660A0 /* .. */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ 46013C3650369B7D38202CDB2A4D8FE1 /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ 44A37E02E67D958D193BB2DD29B21A24 /* .. */,
+ );
+ name = ..;
+ path = "../../../../../../../../.pub-cache/hosted/pub.dev/image_picker_ios-0.8.12+1/ios/image_picker_ios/Sources";
+ sourceTree = "";
+ };
+ 47EF5D2AC0E5F009E2E1D24A0C20FF0C /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ 283E5EB695104DCEB45224F4F6F0214F /* .. */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ 4BA3C1EAFD12CE6CCF1EED95F7B235A9 /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ E91C4F5172EFEED2FB1C17CAB784F1E4 /* .. */,
+ );
+ name = ..;
+ path = ../../../../../../ios;
+ sourceTree = "";
+ };
+ 4C2EFC1AA7AA397C59A05B54BB923DDA /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ A990A7D0D664D8BDCCFE4964562EB581 /* SSZipArchive */,
+ );
+ name = Pods;
+ sourceTree = "";
+ };
+ 4DDC995352EAE304934A1100C89ED60B /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ 9494788E72A2A3012FF5567F1B641E6A /* .. */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ 532CA28822875ADFEB45A95E4E55D60D /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ 0691C08F65D0B79E160211081DB0C9DE /* .. */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ 593E1B8B4FD58F8E691E810B071E6628 /* plugins */ = {
+ isa = PBXGroup;
+ children = (
+ 1EB0A114D1B6EC4A0DE29CDF6760882F /* image_picker_ios */,
+ );
+ name = plugins;
+ path = plugins;
+ sourceTree = "";
+ };
+ 5B1ACF143BE2978CAA0E148988201501 /* .symlinks */ = {
+ isa = PBXGroup;
+ children = (
+ A170FAE710F781F3C4450FDC4638154A /* plugins */,
+ );
+ name = .symlinks;
+ path = .symlinks;
+ sourceTree = "";
+ };
+ 5C8AC46181FD14A3127D3A19EEBE13EF /* Pod */ = {
+ isa = PBXGroup;
+ children = (
+ F43B80528735A38882F1D084CF2C460C /* Flutter.podspec */,
+ );
+ name = Pod;
+ sourceTree = "";
+ };
+ 61CE431C0649244BE4B5FB7564B6D4C9 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ C2B2B17AAF01CC02B82798AB740080F1 /* path_provider_foundation */,
+ );
+ name = Sources;
+ path = Sources;
+ sourceTree = "";
+ };
+ 634ABE7F1B5E8F98757A0B77CF5D980C /* example */ = {
+ isa = PBXGroup;
+ children = (
+ 26582F6BC95F370ECD4002A515904C00 /* ios */,
+ );
+ name = example;
+ path = example;
+ sourceTree = "";
+ };
+ 639FBDC226910778F94DE91EC433E306 /* Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ 2385FC5B4FBB60D7FA9CCDDE76795971 /* Flutter.debug.xcconfig */,
+ 4FE1C6CD74E6C15C72E75C3C1FEA98BB /* Flutter.release.xcconfig */,
+ );
+ name = "Support Files";
+ path = "../Pods/Target Support Files/Flutter";
+ sourceTree = "";
+ };
+ 67C577D79F999CAB4EFEBF7BC0AF2CD5 /* flutter_zip_archive */ = {
+ isa = PBXGroup;
+ children = (
+ B60D3862D28260940B440369BB923ED8 /* example */,
+ );
+ name = flutter_zip_archive;
+ path = flutter_zip_archive;
+ sourceTree = "";
+ };
+ 6A4E3AFD2C2C4FA1564954976A530EBA /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ ACC1563071833CAFAFD73FAAD87C411D /* .. */,
+ B726B4460A6BB11F21C930DEA0088BE2 /* dev */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ 6C5F8FAEB16297D0596233DF23001E99 /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ A0A2F00B326E64E83D34E88F2AA35CF5 /* .. */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ 6F3C68E30F3193F43FA60B20E3456D68 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ 20D93F62CFED6DED5456E0E8DF0E267C /* image_picker_ios */,
+ );
+ name = Sources;
+ path = Sources;
+ sourceTree = "";
+ };
+ 7AF5770871520CFE5CC9A61A52CE9B5D /* Flutter */ = {
+ isa = PBXGroup;
+ children = (
+ 5C8AC46181FD14A3127D3A19EEBE13EF /* Pod */,
+ 639FBDC226910778F94DE91EC433E306 /* Support Files */,
+ );
+ name = Flutter;
+ path = ../Flutter;
+ sourceTree = "";
+ };
+ 7B7375E6309BE56C9BC4EA9E109CEB2B /* Pods-Runner */ = {
+ isa = PBXGroup;
+ children = (
+ 708CDCBECE19528A113F0606FCF4F7CE /* Pods-Runner.modulemap */,
+ A921150CCFA681F261E38B07F3A17837 /* Pods-Runner-acknowledgements.markdown */,
+ 7C64684685E94ADC2FCA3B5985315959 /* Pods-Runner-acknowledgements.plist */,
+ 840D0754C1B8831C9E84C7A7777BF023 /* Pods-Runner-dummy.m */,
+ FAF038EEB68D0EC0DAB29C47E30038A8 /* Pods-Runner-resources.sh */,
+ 98FF0987742F984F89345FC7E0684408 /* Pods-Runner-umbrella.h */,
+ 53AF3AF6DD7CF1B1E6D7C60883746A1A /* Pods-Runner.debug.xcconfig */,
+ EBE9BF3E22F65735A1D716F2DBFBA401 /* Pods-Runner.profile.xcconfig */,
+ F9D86489E6638235A6B5928C4F86E442 /* Pods-Runner.release.xcconfig */,
+ );
+ name = "Pods-Runner";
+ path = "Target Support Files/Pods-Runner";
+ sourceTree = "";
+ };
+ 7B766461644193AAF7096EE2E9B660A0 /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ 6C5F8FAEB16297D0596233DF23001E99 /* .. */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ 7C35E8E55BE7EA49540C8D07C9C1B024 /* Targets Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ 7B7375E6309BE56C9BC4EA9E109CEB2B /* Pods-Runner */,
+ );
+ name = "Targets Support Files";
+ sourceTree = "";
+ };
+ 805F3B907650CF0435EC79DF10F3FA1C /* image_picker_ios */ = {
+ isa = PBXGroup;
+ children = (
+ 46013C3650369B7D38202CDB2A4D8FE1 /* .. */,
+ 9D59A5ACFABD84927F912C7F39DB697F /* Pod */,
+ F01486F893F6B5AF5649235E5D6BF76C /* Support Files */,
+ );
+ name = image_picker_ios;
+ path = ../.symlinks/plugins/image_picker_ios/ios;
+ sourceTree = "";
+ };
+ 81143D9E5271BC75B30C46A69D454D69 /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ 47EF5D2AC0E5F009E2E1D24A0C20FF0C /* .. */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ 82A4F9F99BF998D718A91E6127842907 /* darwin */ = {
+ isa = PBXGroup;
+ children = (
+ D3FDD342C5DC52F1F9583F5BE1B5602E /* path_provider_foundation */,
+ );
+ name = darwin;
+ path = darwin;
+ sourceTree = "";
+ };
+ 8B2064A2B1BA17742AF3DB80CB516809 /* plugins */ = {
+ isa = PBXGroup;
+ children = (
+ 22AFF333E28583DBB11C82AA1148C2FB /* flutter_zip_archive */,
+ );
+ name = plugins;
+ path = plugins;
+ sourceTree = "";
+ };
+ 9494788E72A2A3012FF5567F1B641E6A /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ E5923B3F40B414A17545815DE366E83C /* .. */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ 97757596F6F3874132363C4E6247F6B5 /* flutter_zip_archive */ = {
+ isa = PBXGroup;
+ children = (
+ E700618BC19058430698E4475F4F08E9 /* example */,
+ );
+ name = flutter_zip_archive;
+ path = flutter_zip_archive;
+ sourceTree = "";
+ };
+ 9953E85D09E6A526A8887267B58CEDEB /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ D84ECCE7A7C4F5E689425D9E4D66383B /* dev */,
+ );
+ name = ..;
+ path = .;
+ sourceTree = "";
+ };
+ 9D59A5ACFABD84927F912C7F39DB697F /* Pod */ = {
+ isa = PBXGroup;
+ children = (
+ AB2A8D89ADB96D5E82D66CFF5F3798FA /* image_picker_ios.podspec */,
+ 73DCC14566E642D9CCAD72545235B838 /* ImagePickerPlugin.modulemap */,
+ 644471312FE5602F4F4038271385798A /* LICENSE */,
+ );
+ name = Pod;
+ sourceTree = "";
+ };
+ A0A2F00B326E64E83D34E88F2AA35CF5 /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ 81143D9E5271BC75B30C46A69D454D69 /* .. */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ A170FAE710F781F3C4450FDC4638154A /* plugins */ = {
+ isa = PBXGroup;
+ children = (
+ 412B8E0AF9543F19EFC5CFB821D0A641 /* path_provider_foundation */,
+ );
+ name = plugins;
+ path = plugins;
+ sourceTree = "";
+ };
+ A990A7D0D664D8BDCCFE4964562EB581 /* SSZipArchive */ = {
+ isa = PBXGroup;
+ children = (
+ 39447AE6C30B64C6A84908E6C646DE06 /* mz.h */,
+ 469BDCEA09E97D5798D6DDC30C01B03E /* mz_compat.c */,
+ 16E18E7D08B76D974DD42CFCF4F7165C /* mz_compat.h */,
+ 24ECDBE9B26A33172E58094D02056633 /* mz_crypt.c */,
+ 140776F73E38427DC826D566FC1E72BE /* mz_crypt.h */,
+ 8235FDE1F794FE1F3260A46F04BAE115 /* mz_crypt_apple.c */,
+ 992B637598E94EF7B9929AC99D658C95 /* mz_os.c */,
+ 5B93CF1983A6E099ECD1D3602A9C717A /* mz_os.h */,
+ 72C645BF4E7B7ED9A6B11CC0B506EB4B /* mz_os_posix.c */,
+ 4262217E492BAB38179734C77694A382 /* mz_strm.c */,
+ AEEA9F462777A969324BA2658C7F1127 /* mz_strm.h */,
+ F1E5C2958C967B4F3F2C3D049D0488D7 /* mz_strm_buf.c */,
+ 12C1AA8FDF002ECA9A168A7FD3BBA23E /* mz_strm_buf.h */,
+ 6A171354B2B1BA93EF7DEFFCBB790477 /* mz_strm_mem.c */,
+ 1A10E12604CB5C2D813D323D1D92B021 /* mz_strm_mem.h */,
+ DD0382BA266BAEC1CD021B1F0A8BF6CD /* mz_strm_os.h */,
+ AE46C19BAF608ECBFE3A261E55A55146 /* mz_strm_os_posix.c */,
+ DBE66489982C4D1E2D6B92BDA3537A4F /* mz_strm_pkcrypt.c */,
+ 9C2E066FF80424B701668B2D77C560BD /* mz_strm_pkcrypt.h */,
+ 845CC09BE46F79E82C14446D6AB4FF9F /* mz_strm_split.c */,
+ CB01A475948313A6E0E57AF9EE9F6A70 /* mz_strm_split.h */,
+ AF5520E9DC8EAFAFBEB3FF39E2B6B824 /* mz_strm_wzaes.c */,
+ 6ACFE43EE056FEEFEF34BDE7018DFFFF /* mz_strm_wzaes.h */,
+ EBDAD1C3CC0465744ADBD8D65715A4B5 /* mz_strm_zlib.c */,
+ F4EC6EBB4C1222EE0ECF52722419D227 /* mz_strm_zlib.h */,
+ 0E1683B145EF5BCFF5482D4CD507DF88 /* mz_zip.c */,
+ 1E3FFEDA320B82FC971B0FD2DA459F92 /* mz_zip.h */,
+ 25A5B6154FD369610C5DFF5DF65D5295 /* mz_zip_rw.c */,
+ 16E839C8ADDF9AA566CC73A1CFA93F24 /* mz_zip_rw.h */,
+ E2412D89F4357131B08AB7522D938AF5 /* SSZipArchive.h */,
+ 4DF0F2EAF67E2AABC8EF321105441FEA /* SSZipArchive.m */,
+ 60CECCF5D210691DFC111FB05E37872B /* SSZipCommon.h */,
+ 21B82B6050EDF009E9F30A4CCBE6B724 /* ZipArchive.h */,
+ ED377D8D646867F13FBCC6A8BD82D2AC /* Support Files */,
+ );
+ name = SSZipArchive;
+ path = SSZipArchive;
+ sourceTree = "";
+ };
+ ACC1563071833CAFAFD73FAAD87C411D /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ C9BB4672065A1875E1BF3EF4C250E3FF /* dev */,
+ );
+ name = ..;
+ path = .;
+ sourceTree = "";
+ };
+ AD9241FFC6B34963968DB076263E8661 /* image_picker_ios */ = {
+ isa = PBXGroup;
+ children = (
+ EEDDA1BEF4DCC4F15AA1DD18FED35185 /* FLTImagePickerImageUtil.m */,
+ 97ADF2784597063A17C58E45F2C2A416 /* FLTImagePickerMetaDataUtil.m */,
+ 94B07FEAE5C1BF297EEBCAE2DCF763E1 /* FLTImagePickerPhotoAssetUtil.m */,
+ 39D33BA8E235006E17873CAD05228874 /* FLTImagePickerPlugin.m */,
+ 3FAD94D323A5738B1BE2F02B71040439 /* FLTPHPickerSaveImageToPathOperation.m */,
+ F3DB0289041E933D8516A59825CF0E72 /* messages.g.m */,
+ F9425C1275484307C97826F27F5BF2D9 /* include */,
+ );
+ name = image_picker_ios;
+ path = image_picker_ios;
+ sourceTree = "";
+ };
+ B087CAB42A19F5510EA5349F2E9847B8 /* path_provider_foundation */ = {
+ isa = PBXGroup;
+ children = (
+ 061BDC2041CEEFCF9C5D51B863F5C0E3 /* Sources */,
+ );
+ name = path_provider_foundation;
+ path = path_provider_foundation;
+ sourceTree = "";
+ };
+ B270286653AD4D9D884DA2550893844A /* .symlinks */ = {
+ isa = PBXGroup;
+ children = (
+ 0FB6A10962409C0C9499BEC0AE7F142D /* plugins */,
+ );
+ name = .symlinks;
+ path = .symlinks;
+ sourceTree = "";
+ };
+ B434A998CF44C503C51ABEE9DDCAA0FB /* example */ = {
+ isa = PBXGroup;
+ children = (
+ 1C1569DFD7F21873AA22A4663871F688 /* ios */,
+ );
+ name = example;
+ path = example;
+ sourceTree = "";
+ };
+ B60D3862D28260940B440369BB923ED8 /* example */ = {
+ isa = PBXGroup;
+ children = (
+ 050CCC446AD8397B64791D09CDB713ED /* ios */,
+ );
+ name = example;
+ path = example;
+ sourceTree = "";
+ };
+ B726B4460A6BB11F21C930DEA0088BE2 /* dev */ = {
+ isa = PBXGroup;
+ children = (
+ DB1326F9E6665E49CD565AC07E8211E8 /* flutter_zip_archive */,
+ );
+ name = dev;
+ path = dev;
+ sourceTree = "";
+ };
+ B836B16159999F53B3B4736171C7867C /* Pod */ = {
+ isa = PBXGroup;
+ children = (
+ 217547AD3D570440139C696437026792 /* flutter_zip_archive.podspec */,
+ );
+ name = Pod;
+ sourceTree = "";
+ };
+ B8B161D2BB67E34352AEE22E41DCE367 /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ 6A4E3AFD2C2C4FA1564954976A530EBA /* .. */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ BFD386F038BEC96036E029043332EED0 /* dev */ = {
+ isa = PBXGroup;
+ children = (
+ 97757596F6F3874132363C4E6247F6B5 /* flutter_zip_archive */,
+ );
+ name = dev;
+ path = dev;
+ sourceTree = "";
+ };
+ C052E631D4F815059F6EFB9CD57B1B25 /* .symlinks */ = {
+ isa = PBXGroup;
+ children = (
+ 593E1B8B4FD58F8E691E810B071E6628 /* plugins */,
+ );
+ name = .symlinks;
+ path = .symlinks;
+ sourceTree = "";
+ };
+ C2B2B17AAF01CC02B82798AB740080F1 /* path_provider_foundation */ = {
+ isa = PBXGroup;
+ children = (
+ E1B50A4270F497D4D11023451E7D91F2 /* Resources */,
+ );
+ name = path_provider_foundation;
+ path = path_provider_foundation;
+ sourceTree = "";
+ };
+ C416394DCD30AECB26464CBCC1726E77 /* image_picker_ios */ = {
+ isa = PBXGroup;
+ children = (
+ 2C5931DDBC42B9AEAB6AFFFAF36B2478 /* FLTImagePickerImageUtil.h */,
+ AE0B441E96C7552881B83BCEC18DBF4B /* FLTImagePickerMetaDataUtil.h */,
+ 067AFCF9FC0C8C24434A57F462A58D8A /* FLTImagePickerPhotoAssetUtil.h */,
+ 709F18E4309532A00BD0112361BEE2EF /* FLTImagePickerPlugin.h */,
+ 0D3A665945D0563245B5CC659D2EC58C /* FLTImagePickerPlugin_Test.h */,
+ 883DD6C406A539B3BB1859251D3F7E63 /* FLTPHPickerSaveImageToPathOperation.h */,
+ D894AC797DD0D23757AD88B7711E8AF4 /* messages.g.h */,
+ );
+ name = image_picker_ios;
+ path = image_picker_ios;
+ sourceTree = "";
+ };
+ C9BB4672065A1875E1BF3EF4C250E3FF /* dev */ = {
+ isa = PBXGroup;
+ children = (
+ 153A146CA0C4EFCC863255F04B440F53 /* flutter_zip_archive */,
+ );
+ name = dev;
+ path = dev;
+ sourceTree = "";
+ };
+ CB9A21A948E2BA51501E33BAAE387026 /* path_provider_foundation */ = {
+ isa = PBXGroup;
+ children = (
+ F915055814568C413135E9700435C981 /* messages.g.swift */,
+ 93A3805C91988CA261FEAE5F5DA3D97B /* PathProviderPlugin.swift */,
+ );
+ name = path_provider_foundation;
+ path = path_provider_foundation;
+ sourceTree = "";
+ };
+ CF1408CF629C7361332E53B88F7BD30C = {
+ isa = PBXGroup;
+ children = (
+ 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
+ F24667DC3A1506C9DCB0B7873063E33F /* Development Pods */,
+ D89477F20FB1DE18A04690586D7808C4 /* Frameworks */,
+ 4C2EFC1AA7AA397C59A05B54BB923DDA /* Pods */,
+ F2417E9B39050709CD37B4BF8933A8DC /* Products */,
+ 7C35E8E55BE7EA49540C8D07C9C1B024 /* Targets Support Files */,
+ );
+ sourceTree = "";
+ };
+ CF283A4F9D242FF63C728E266E35715D /* Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ DA4E0315C7C9BA3E35027274EF1FA4E3 /* path_provider_foundation.modulemap */,
+ D64E456DA5B76A11960FCE200795B399 /* path_provider_foundation-dummy.m */,
+ 13BB4A0B3CA6FA687133605FFD01F357 /* path_provider_foundation-prefix.pch */,
+ 770186A4CFB5E3E6389C70EA531A5CA0 /* path_provider_foundation-umbrella.h */,
+ B18DD32EAE0DE5C4F096D91B809FD483 /* path_provider_foundation.debug.xcconfig */,
+ 4CC30F89F4EA2AD764170CD84C70E5E1 /* path_provider_foundation.release.xcconfig */,
+ 51426DEED975E10237DEFF6AD33A0171 /* ResourceBundle-path_provider_foundation_privacy-path_provider_foundation-Info.plist */,
+ );
+ name = "Support Files";
+ path = "../../../../Pods/Target Support Files/path_provider_foundation";
+ sourceTree = "";
+ };
+ D3FDD342C5DC52F1F9583F5BE1B5602E /* path_provider_foundation */ = {
+ isa = PBXGroup;
+ children = (
+ 61CE431C0649244BE4B5FB7564B6D4C9 /* Sources */,
+ );
+ name = path_provider_foundation;
+ path = path_provider_foundation;
+ sourceTree = "";
+ };
+ D4E3FCCDA265A41571C8A0AAED9FAF7A /* plugins */ = {
+ isa = PBXGroup;
+ children = (
+ 3EE20779ECE61B143A6265D74E3A6C9B /* path_provider_foundation */,
+ );
+ name = plugins;
+ path = plugins;
+ sourceTree = "";
+ };
+ D5EA7285BCBC0F5E7D79770CB8F5D40D /* Pod */ = {
+ isa = PBXGroup;
+ children = (
+ 7DA0F6D59470A9CDD3582043D2861F7F /* LICENSE */,
+ 584170740CE9B7206E96909A68C0A5F3 /* path_provider_foundation.podspec */,
+ );
+ name = Pod;
+ sourceTree = "";
+ };
+ D84ECCE7A7C4F5E689425D9E4D66383B /* dev */ = {
+ isa = PBXGroup;
+ children = (
+ 67C577D79F999CAB4EFEBF7BC0AF2CD5 /* flutter_zip_archive */,
+ );
+ name = dev;
+ path = dev;
+ sourceTree = "";
+ };
+ D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ DB1326F9E6665E49CD565AC07E8211E8 /* flutter_zip_archive */ = {
+ isa = PBXGroup;
+ children = (
+ 39AF616777DC6EAE47518948A2228751 /* example */,
+ );
+ name = flutter_zip_archive;
+ path = flutter_zip_archive;
+ sourceTree = "";
+ };
+ E1B50A4270F497D4D11023451E7D91F2 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ BCEBE7D9429E751E0A99672605582CB4 /* PrivacyInfo.xcprivacy */,
+ );
+ name = Resources;
+ path = Resources;
+ sourceTree = "";
+ };
+ E23AA46A8BDA8FB8A198D2C626A0E946 /* .symlinks */ = {
+ isa = PBXGroup;
+ children = (
+ 8B2064A2B1BA17742AF3DB80CB516809 /* plugins */,
+ );
+ name = .symlinks;
+ path = .symlinks;
+ sourceTree = "";
+ };
+ E5923B3F40B414A17545815DE366E83C /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ B8B161D2BB67E34352AEE22E41DCE367 /* .. */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ E6071BD31E7B58F0563EB2D84D935B34 /* ios */ = {
+ isa = PBXGroup;
+ children = (
+ 33AB56846534011043388CEEA763C1A1 /* Classes */,
+ );
+ name = ios;
+ path = ios;
+ sourceTree = "";
+ };
+ E700618BC19058430698E4475F4F08E9 /* example */ = {
+ isa = PBXGroup;
+ children = (
+ FFDD9CC066EB6E482577CF0630665451 /* ios */,
+ );
+ name = example;
+ path = example;
+ sourceTree = "";
+ };
+ E91C4F5172EFEED2FB1C17CAB784F1E4 /* .. */ = {
+ isa = PBXGroup;
+ children = (
+ B434A998CF44C503C51ABEE9DDCAA0FB /* example */,
+ );
+ name = ..;
+ path = ..;
+ sourceTree = "";
+ };
+ ED2110787BD76C3CEF736A393360440A /* image_picker_ios */ = {
+ isa = PBXGroup;
+ children = (
+ 6F3C68E30F3193F43FA60B20E3456D68 /* Sources */,
+ );
+ name = image_picker_ios;
+ path = image_picker_ios;
+ sourceTree = "";
+ };
+ ED377D8D646867F13FBCC6A8BD82D2AC /* Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ 3FD43EC7081C2C90F8E6F58F55FECEBD /* SSZipArchive.modulemap */,
+ DA232AA1C887644730470CAB01C6B6E5 /* SSZipArchive-dummy.m */,
+ 158505A03770AF2DB76FF314D677B516 /* SSZipArchive-prefix.pch */,
+ D797162278B1BC724D7DE9D436D831AD /* SSZipArchive-umbrella.h */,
+ A3B27A72CBE2C688B0471E28255E900C /* SSZipArchive.debug.xcconfig */,
+ F98D0085EF3B9B9109CBC5C64C58BBDF /* SSZipArchive.release.xcconfig */,
+ );
+ name = "Support Files";
+ path = "../Target Support Files/SSZipArchive";
+ sourceTree = "";
+ };
+ F01486F893F6B5AF5649235E5D6BF76C /* Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ 439236E296E8D08D89FD7B07C053DFBA /* image_picker_ios.modulemap */,
+ 7CD2C64EC2B10B70C6AE18B29A5AEC62 /* image_picker_ios-dummy.m */,
+ 8C96D5272304FF91397AE6FF1D7F1D4F /* image_picker_ios-prefix.pch */,
+ 3D4D3DC9F2C625816586F125624834D0 /* image_picker_ios.debug.xcconfig */,
+ E3BC2E4F8C93222C90102645FA30BA6D /* image_picker_ios.release.xcconfig */,
+ 0606E77F294E1D7BC110559CB2C788C7 /* ResourceBundle-image_picker_ios_privacy-image_picker_ios-Info.plist */,
+ );
+ name = "Support Files";
+ path = "../../../../Pods/Target Support Files/image_picker_ios";
+ sourceTree = "";
+ };
+ F09C2277063031D3D80AFFCD32B3C05F /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ D7D3CBA6A138DA7AC7571F2ABF928263 /* PrivacyInfo.xcprivacy */,
+ );
+ name = Resources;
+ path = Resources;
+ sourceTree = "";
+ };
+ F0E631F8F22A2C24EEAB328F71A51A79 /* darwin */ = {
+ isa = PBXGroup;
+ children = (
+ B087CAB42A19F5510EA5349F2E9847B8 /* path_provider_foundation */,
+ );
+ name = darwin;
+ path = darwin;
+ sourceTree = "";
+ };
+ F2417E9B39050709CD37B4BF8933A8DC /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 341C2BD787A5690B04A8F1D36334DA98 /* flutter_zip_archive */,
+ 768975E636D1D2FB85622FB67DB04E5A /* image_picker_ios */,
+ F0C7EFBFF01CFAAB52BA74E6CB40CE2C /* image_picker_ios-image_picker_ios_privacy */,
+ AE157A33FEF959A214796BFF348717F6 /* path_provider_foundation */,
+ 3DBD4BADE27F8B91024E4B4B4DD75DB5 /* path_provider_foundation-path_provider_foundation_privacy */,
+ 669E8F25E1897672BDB80B7EB784DA24 /* Pods-Runner */,
+ 91B23470DEB9A986332BEB5034234BC7 /* SSZipArchive */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ F24667DC3A1506C9DCB0B7873063E33F /* Development Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 7AF5770871520CFE5CC9A61A52CE9B5D /* Flutter */,
+ 1352E865F13A006E5ED23FF083D07F52 /* flutter_zip_archive */,
+ 805F3B907650CF0435EC79DF10F3FA1C /* image_picker_ios */,
+ 2E2513E2422DA3842532E6DD2D95E015 /* path_provider_foundation */,
+ );
+ name = "Development Pods";
+ sourceTree = "";
+ };
+ F42A4A2E567E25A23E3FE0D274252AFD /* ios */ = {
+ isa = PBXGroup;
+ children = (
+ ED2110787BD76C3CEF736A393360440A /* image_picker_ios */,
+ );
+ name = ios;
+ path = ios;
+ sourceTree = "";
+ };
+ F433B2A002E64BBE97214420F4E9E5D0 /* .symlinks */ = {
+ isa = PBXGroup;
+ children = (
+ D4E3FCCDA265A41571C8A0AAED9FAF7A /* plugins */,
+ );
+ name = .symlinks;
+ path = .symlinks;
+ sourceTree = "";
+ };
+ F9425C1275484307C97826F27F5BF2D9 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 103FF19F34B7AED6A0CBBC74BB25E40B /* image_picker_ios-umbrella.h */,
+ C416394DCD30AECB26464CBCC1726E77 /* image_picker_ios */,
+ );
+ name = include;
+ path = include;
+ sourceTree = "";
+ };
+ FFDD9CC066EB6E482577CF0630665451 /* ios */ = {
+ isa = PBXGroup;
+ children = (
+ C052E631D4F815059F6EFB9CD57B1B25 /* .symlinks */,
+ );
+ name = ios;
+ path = ios;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ 222B621D1F9C1B20F20DFA1685AE17BA /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 66EACCCF47434ED3AB231E350BA3E9E0 /* mz.h in Headers */,
+ 819B3A2ECFD498AD81599AB11612D616 /* mz_compat.h in Headers */,
+ 16E0CF48AEA2E552D793E4CEFDF01E03 /* mz_crypt.h in Headers */,
+ B9B6975C3190E6A4F26340EF8DC6984F /* mz_os.h in Headers */,
+ 931A7AB36F8ABEC096488088BFF9F493 /* mz_strm.h in Headers */,
+ 0726FD424B30BA6D4953EBBE43186222 /* mz_strm_buf.h in Headers */,
+ 3D90816169AAE962AD743B9601F824CD /* mz_strm_mem.h in Headers */,
+ D59034B379A06B9595AE3AE84C34ABC0 /* mz_strm_os.h in Headers */,
+ F1238BE7B56A8E019FF9DD839A888D68 /* mz_strm_pkcrypt.h in Headers */,
+ 4C77C2E3005AF4EEAF3C854CB70DE8DB /* mz_strm_split.h in Headers */,
+ C865F14E7408C4999313606383EC72D0 /* mz_strm_wzaes.h in Headers */,
+ DC249EFACF88D684359E95FBF6E0066E /* mz_strm_zlib.h in Headers */,
+ 434EC36C5177F72BF11115258608DAD9 /* mz_zip.h in Headers */,
+ E7E3A346B2D08A0E7915A8923510B252 /* mz_zip_rw.h in Headers */,
+ 63ED7BD0781FCECB07CADC10155E0590 /* SSZipArchive.h in Headers */,
+ 1B014EF7EB190969927DEA276BC6B23C /* SSZipArchive-umbrella.h in Headers */,
+ D420F9BB5AF33832432457F0E4453045 /* SSZipCommon.h in Headers */,
+ F24496385662469D1EE2E39E85765007 /* ZipArchive.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 61CBC4E54636C2621ABA81AD8D848EE0 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 282FE044A7AC0F5E2C8F0AF3BAAF4995 /* FLTImagePickerImageUtil.h in Headers */,
+ 1A0D211BBEE177C411B300863AECAE8A /* FLTImagePickerMetaDataUtil.h in Headers */,
+ 0F005B941A20C60BD12B3353442823F2 /* FLTImagePickerPhotoAssetUtil.h in Headers */,
+ 0DE0005A94CFDFAA880537475881D042 /* FLTImagePickerPlugin.h in Headers */,
+ 1F925986C363812371A165656DA4D93F /* FLTImagePickerPlugin_Test.h in Headers */,
+ F3DBE7CCD5C5E2704963FB8CA7D0FD81 /* FLTPHPickerSaveImageToPathOperation.h in Headers */,
+ BAC8DCAC5526DDDFA2F67FB4847E6832 /* image_picker_ios-umbrella.h in Headers */,
+ 22449638C213B5879C5B0B4252349AC6 /* messages.g.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 91D3343BF3CC2D832D4C7CC7CBCF46B5 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5062CC339370B5ADC7009EA190F6C243 /* Pods-Runner-umbrella.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DC9A979F7047F6865E13B87906336977 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 91B7AEB0D5A36D5C02BEE073F273356E /* FlutterZipArchivePlugin.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ FF2F25E5DFF1C25F61DB4965B6BEFE3F /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 93E2AFE812DAB37F6091635672C243BC /* path_provider_foundation-umbrella.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ 56F581DDCB0A032454E604885E17AE3C /* path_provider_foundation */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 137DF6EB8A85C6355521BB058DBA254A /* Build configuration list for PBXNativeTarget "path_provider_foundation" */;
+ buildPhases = (
+ FF2F25E5DFF1C25F61DB4965B6BEFE3F /* Headers */,
+ F933F8017C1C37E783A177F4E7848E24 /* Sources */,
+ 2558E69F5F906900B52771793F417FC6 /* Frameworks */,
+ 2B0D5E326E9C01E599D12A6FDC0EE7C2 /* Copy generated compatibility header */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ B3D42755DACDDDFBB17111C10A301D86 /* PBXTargetDependency */,
+ 40E9839A3F8982D20CFD95CC1DEF38F4 /* PBXTargetDependency */,
+ );
+ name = path_provider_foundation;
+ productName = path_provider_foundation;
+ productReference = AE157A33FEF959A214796BFF348717F6 /* path_provider_foundation */;
+ productType = "com.apple.product-type.library.static";
+ };
+ 845DF30C6C93A1F35C6DCEBAFECA8F8A /* image_picker_ios */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 5B880EE3869032F8259AEFBB0A656E74 /* Build configuration list for PBXNativeTarget "image_picker_ios" */;
+ buildPhases = (
+ 61CBC4E54636C2621ABA81AD8D848EE0 /* Headers */,
+ 3CDF1C39688B3E6201228E11384FDCA4 /* Sources */,
+ 3F713938A0EA00D55E1828FD3B738493 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 5360319D3FB366253352933EDF631BC7 /* PBXTargetDependency */,
+ E452C4BA3592D2F41E25891DB2D8C8E7 /* PBXTargetDependency */,
+ );
+ name = image_picker_ios;
+ productName = image_picker_ios;
+ productReference = 768975E636D1D2FB85622FB67DB04E5A /* image_picker_ios */;
+ productType = "com.apple.product-type.library.static";
+ };
+ 8B74B458B450D74B75744B87BD747314 /* Pods-Runner */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = A6F336FF3519C47857372EC19548EAB1 /* Build configuration list for PBXNativeTarget "Pods-Runner" */;
+ buildPhases = (
+ 91D3343BF3CC2D832D4C7CC7CBCF46B5 /* Headers */,
+ 7C47DE67EA3F18A187D1E7BF6A91B7D7 /* Sources */,
+ 3F8134C2F82DCA6560431B0D844A29F8 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 7923FE97955F7BF203CD7F5FDC1CC3C4 /* PBXTargetDependency */,
+ 6FFCAC9544D8DEF0FAEA13605C96C3F3 /* PBXTargetDependency */,
+ 31254088AE3BB748F33864E7DC7AC330 /* PBXTargetDependency */,
+ 22C7D9B04C7AC3AD2F0355B583D38394 /* PBXTargetDependency */,
+ 4E1BFD91DE107EFB4C8176E9978E6F63 /* PBXTargetDependency */,
+ );
+ name = "Pods-Runner";
+ productName = "Pods-Runner";
+ productReference = 669E8F25E1897672BDB80B7EB784DA24 /* Pods-Runner */;
+ productType = "com.apple.product-type.library.static";
+ };
+ 90EC34F1BB6A4F41C55C258475A7E651 /* flutter_zip_archive */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 32BFB2019674B7AE1876D4B4B24D5553 /* Build configuration list for PBXNativeTarget "flutter_zip_archive" */;
+ buildPhases = (
+ DC9A979F7047F6865E13B87906336977 /* Headers */,
+ CB10262DC131B1D9498F3DE235BA8C96 /* Sources */,
+ 7FE851FEA4B64A032B471684F996BA74 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 1A8885151E3E383947694EBF8B83E4D7 /* PBXTargetDependency */,
+ B0FA67D12183D71021A6257E19255BE3 /* PBXTargetDependency */,
+ );
+ name = flutter_zip_archive;
+ productName = flutter_zip_archive;
+ productReference = 341C2BD787A5690B04A8F1D36334DA98 /* flutter_zip_archive */;
+ productType = "com.apple.product-type.library.static";
+ };
+ A450BF39E3E5256209A256E278D71BFD /* image_picker_ios-image_picker_ios_privacy */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 141E73221CA08545B6147F4A7A55EFC1 /* Build configuration list for PBXNativeTarget "image_picker_ios-image_picker_ios_privacy" */;
+ buildPhases = (
+ DF0C0CEF7B5564B72097A94F7CF7EE03 /* Sources */,
+ 4D071340C394C92AD06E860781CA86C2 /* Frameworks */,
+ E51FD13F35EBC53BDDAF702FC6E9993F /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "image_picker_ios-image_picker_ios_privacy";
+ productName = image_picker_ios_privacy;
+ productReference = F0C7EFBFF01CFAAB52BA74E6CB40CE2C /* image_picker_ios-image_picker_ios_privacy */;
+ productType = "com.apple.product-type.bundle";
+ };
+ CACE6618E7996464E38687E13F67D945 /* path_provider_foundation-path_provider_foundation_privacy */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = E36BFA8FF115BE5EC0C9F37E4B5C3E44 /* Build configuration list for PBXNativeTarget "path_provider_foundation-path_provider_foundation_privacy" */;
+ buildPhases = (
+ EE732A8E6041D847CED54ADBE75459ED /* Sources */,
+ B3D0BCB641402CFFA762DFCC930BEAF2 /* Frameworks */,
+ A451DB4D14EED841898FE0F84C598348 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "path_provider_foundation-path_provider_foundation_privacy";
+ productName = path_provider_foundation_privacy;
+ productReference = 3DBD4BADE27F8B91024E4B4B4DD75DB5 /* path_provider_foundation-path_provider_foundation_privacy */;
+ productType = "com.apple.product-type.bundle";
+ };
+ F60E38364AFF5E1349FF07415B944396 /* SSZipArchive */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 005080B948893987FCCFE8FF88AB389B /* Build configuration list for PBXNativeTarget "SSZipArchive" */;
+ buildPhases = (
+ 222B621D1F9C1B20F20DFA1685AE17BA /* Headers */,
+ 783280306C9731EE1046B170A19E10B6 /* Sources */,
+ A23E9B00FB6D769A35A4FA244ACC3313 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SSZipArchive;
+ productName = SSZipArchive;
+ productReference = 91B23470DEB9A986332BEB5034234BC7 /* SSZipArchive */;
+ productType = "com.apple.product-type.library.static";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ BFDFE7DC352907FC980B868725387E98 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 1600;
+ LastUpgradeCheck = 1600;
+ };
+ buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
+ compatibilityVersion = "Xcode 12.0";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ Base,
+ en,
+ );
+ mainGroup = CF1408CF629C7361332E53B88F7BD30C;
+ minimizedProjectReferenceProxies = 0;
+ preferredProjectObjectVersion = 77;
+ productRefGroup = F2417E9B39050709CD37B4BF8933A8DC /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 1EFDDC32A34D56D411E640A81DCD9E73 /* Flutter */,
+ 90EC34F1BB6A4F41C55C258475A7E651 /* flutter_zip_archive */,
+ 845DF30C6C93A1F35C6DCEBAFECA8F8A /* image_picker_ios */,
+ A450BF39E3E5256209A256E278D71BFD /* image_picker_ios-image_picker_ios_privacy */,
+ 56F581DDCB0A032454E604885E17AE3C /* path_provider_foundation */,
+ CACE6618E7996464E38687E13F67D945 /* path_provider_foundation-path_provider_foundation_privacy */,
+ 8B74B458B450D74B75744B87BD747314 /* Pods-Runner */,
+ F60E38364AFF5E1349FF07415B944396 /* SSZipArchive */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ A451DB4D14EED841898FE0F84C598348 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 21B10195ABE74EAF434F3F7D47A6D4AE /* PrivacyInfo.xcprivacy in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ E51FD13F35EBC53BDDAF702FC6E9993F /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B2B03A67A856155E9C97D8789A14DCB0 /* PrivacyInfo.xcprivacy in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 2B0D5E326E9C01E599D12A6FDC0EE7C2 /* Copy generated compatibility header */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h",
+ "${PODS_ROOT}/Headers/Public/path_provider_foundation/path_provider_foundation.modulemap",
+ "${PODS_ROOT}/Headers/Public/path_provider_foundation/path_provider_foundation-umbrella.h",
+ );
+ name = "Copy generated compatibility header";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap",
+ "${BUILT_PRODUCTS_DIR}/path_provider_foundation-umbrella.h",
+ "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/path_provider_foundation/path_provider_foundation.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/path_provider_foundation/path_provider_foundation-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n";
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 3CDF1C39688B3E6201228E11384FDCA4 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ ECC89551CC74B2C246409BF811FA7093 /* FLTImagePickerImageUtil.m in Sources */,
+ 26197AB013F17A90E969D40F21F2E5E7 /* FLTImagePickerMetaDataUtil.m in Sources */,
+ 55816DD001D0AA0ECB507615972E6B09 /* FLTImagePickerPhotoAssetUtil.m in Sources */,
+ D19F4D5D0225A7C4347D5771D9F954BD /* FLTImagePickerPlugin.m in Sources */,
+ EE5381408A40FD39E00B742E7D33269D /* FLTPHPickerSaveImageToPathOperation.m in Sources */,
+ 60E71E745458AF617C07B8F7F51214BD /* image_picker_ios-dummy.m in Sources */,
+ 2CFEF86D4F0B45C07E56F11DE92AA58B /* messages.g.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 783280306C9731EE1046B170A19E10B6 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AF351EFE2094088F8790557786CF31F8 /* mz_compat.c in Sources */,
+ F000C5D6B12A26D2175D104D7734FB2C /* mz_crypt.c in Sources */,
+ 471E735F2F2DEE1682B67FCDEBD5525B /* mz_crypt_apple.c in Sources */,
+ 550E15099AECC9BC8F323C48776B4734 /* mz_os.c in Sources */,
+ 75DCDE92C2AB8A88200BEC7988D31C2C /* mz_os_posix.c in Sources */,
+ 876816E2BD73E81B54660A2B2602F906 /* mz_strm.c in Sources */,
+ 8FB2CBCFCAE38820BC13123E51B34E04 /* mz_strm_buf.c in Sources */,
+ 77B3DAD6979ED9910299B33B1F9A3BFC /* mz_strm_mem.c in Sources */,
+ 0192BB9B3BC3A59C1D31AD402E61043F /* mz_strm_os_posix.c in Sources */,
+ 646C51151B4A85B239DC529A58F7C0F4 /* mz_strm_pkcrypt.c in Sources */,
+ D8F2EA319AB00D3CFA57AD207D813FEF /* mz_strm_split.c in Sources */,
+ 8BAF240113D4B39583D15B2B2D0EB81E /* mz_strm_wzaes.c in Sources */,
+ CBB5E1014FBF20396CCC331BEFE8D5AA /* mz_strm_zlib.c in Sources */,
+ 06B24173AC8ECEDC8E89DFD65AA55B14 /* mz_zip.c in Sources */,
+ 6C2811D8C830C6F00017A5ED41C14F67 /* mz_zip_rw.c in Sources */,
+ E552B5094CD15C1C3C072997E6297080 /* SSZipArchive.m in Sources */,
+ BA6E799C9BE2570442050507F3EDE21F /* SSZipArchive-dummy.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 7C47DE67EA3F18A187D1E7BF6A91B7D7 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ F84C0DCBD29CD0DD24B675C56D0CCD58 /* Pods-Runner-dummy.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ CB10262DC131B1D9498F3DE235BA8C96 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8AE8A3427C00305B52EA9D00953E3B98 /* flutter_zip_archive-dummy.m in Sources */,
+ FCFD96DD03A6347A2ED70D1601A5C4AE /* FlutterZipArchivePlugin.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DF0C0CEF7B5564B72097A94F7CF7EE03 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ EE732A8E6041D847CED54ADBE75459ED /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ F933F8017C1C37E783A177F4E7848E24 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3C665714AF5342FDE72D5FFBAFA00552 /* messages.g.swift in Sources */,
+ FFF7B54CBF6B2E14645E5433FB8B1CE3 /* path_provider_foundation-dummy.m in Sources */,
+ 71896C684AD84CB7F4B06DE4734947FE /* PathProviderPlugin.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 1A8885151E3E383947694EBF8B83E4D7 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = Flutter;
+ target = 1EFDDC32A34D56D411E640A81DCD9E73 /* Flutter */;
+ targetProxy = FF13E394381A8B43931D45A67230039D /* PBXContainerItemProxy */;
+ };
+ 22C7D9B04C7AC3AD2F0355B583D38394 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = image_picker_ios;
+ target = 845DF30C6C93A1F35C6DCEBAFECA8F8A /* image_picker_ios */;
+ targetProxy = B4A16B3509BFAB92A7328F84B9DF6B63 /* PBXContainerItemProxy */;
+ };
+ 31254088AE3BB748F33864E7DC7AC330 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = flutter_zip_archive;
+ target = 90EC34F1BB6A4F41C55C258475A7E651 /* flutter_zip_archive */;
+ targetProxy = 1C6D73177350C6FA73948AC00A3DA25C /* PBXContainerItemProxy */;
+ };
+ 40E9839A3F8982D20CFD95CC1DEF38F4 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "path_provider_foundation-path_provider_foundation_privacy";
+ target = CACE6618E7996464E38687E13F67D945 /* path_provider_foundation-path_provider_foundation_privacy */;
+ targetProxy = FB666CDF21EB3604328DE9218749F0D6 /* PBXContainerItemProxy */;
+ };
+ 4E1BFD91DE107EFB4C8176E9978E6F63 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = path_provider_foundation;
+ target = 56F581DDCB0A032454E604885E17AE3C /* path_provider_foundation */;
+ targetProxy = A3371431D724C1CD78E3CD5695DF82F8 /* PBXContainerItemProxy */;
+ };
+ 5360319D3FB366253352933EDF631BC7 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = Flutter;
+ target = 1EFDDC32A34D56D411E640A81DCD9E73 /* Flutter */;
+ targetProxy = 95AB7DA0A04A84289AAD37E5B981E401 /* PBXContainerItemProxy */;
+ };
+ 6FFCAC9544D8DEF0FAEA13605C96C3F3 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = SSZipArchive;
+ target = F60E38364AFF5E1349FF07415B944396 /* SSZipArchive */;
+ targetProxy = 5277806C7E4F7A9929BCBABEF8C31608 /* PBXContainerItemProxy */;
+ };
+ 7923FE97955F7BF203CD7F5FDC1CC3C4 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = Flutter;
+ target = 1EFDDC32A34D56D411E640A81DCD9E73 /* Flutter */;
+ targetProxy = 7505BF6DFD02F82267E2AED7E06DEB34 /* PBXContainerItemProxy */;
+ };
+ B0FA67D12183D71021A6257E19255BE3 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = SSZipArchive;
+ target = F60E38364AFF5E1349FF07415B944396 /* SSZipArchive */;
+ targetProxy = 9FBF5A48CDF9B6D8C0AC4CEC488976EB /* PBXContainerItemProxy */;
+ };
+ B3D42755DACDDDFBB17111C10A301D86 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = Flutter;
+ target = 1EFDDC32A34D56D411E640A81DCD9E73 /* Flutter */;
+ targetProxy = 5352423135DFD0ED0C0AB93CA143E1AE /* PBXContainerItemProxy */;
+ };
+ E452C4BA3592D2F41E25891DB2D8C8E7 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "image_picker_ios-image_picker_ios_privacy";
+ target = A450BF39E3E5256209A256E278D71BFD /* image_picker_ios-image_picker_ios_privacy */;
+ targetProxy = FD6C345D0107FBC705F3DEA05839FC5A /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ 03C2C2C858DA703836C5C5AE6CAB8770 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 4CC30F89F4EA2AD764170CD84C70E5E1 /* path_provider_foundation.release.xcconfig */;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_BITCODE = NO;
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\"",
+ "$(inherited)",
+ );
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
+ "$(inherited)",
+ );
+ GCC_PREFIX_HEADER = "Target Support Files/path_provider_foundation/path_provider_foundation-prefix.pch";
+ GENERATE_INFOPLIST_FILE = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MODULEMAP_FILE = Headers/Public/path_provider_foundation/path_provider_foundation.modulemap;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-framework",
+ Flutter,
+ );
+ OTHER_LIBTOOLFLAGS = "";
+ PRIVATE_HEADERS_FOLDER_PATH = "";
+ PRODUCT_MODULE_NAME = path_provider_foundation;
+ PRODUCT_NAME = path_provider_foundation;
+ PUBLIC_HEADERS_FOLDER_PATH = "";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_INSTALL_OBJC_HEADER = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ };
+ name = Release;
+ };
+ 06A8ADFC21B5D8D7339269BAD24145C3 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = B18DD32EAE0DE5C4F096D91B809FD483 /* path_provider_foundation.debug.xcconfig */;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_BITCODE = NO;
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64\"",
+ "$(inherited)",
+ );
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
+ "$(inherited)",
+ );
+ GCC_PREFIX_HEADER = "Target Support Files/path_provider_foundation/path_provider_foundation-prefix.pch";
+ GENERATE_INFOPLIST_FILE = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MODULEMAP_FILE = Headers/Public/path_provider_foundation/path_provider_foundation.modulemap;
+ ONLY_ACTIVE_ARCH = NO;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-framework",
+ Flutter,
+ );
+ OTHER_LIBTOOLFLAGS = "";
+ PRIVATE_HEADERS_FOLDER_PATH = "";
+ PRODUCT_MODULE_NAME = path_provider_foundation;
+ PRODUCT_NAME = path_provider_foundation;
+ PUBLIC_HEADERS_FOLDER_PATH = "";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_INSTALL_OBJC_HEADER = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ };
+ name = Debug;
+ };
+ 1E8B0F6E1BD9FD7D7A2E2D84E0F8344E /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = B18DD32EAE0DE5C4F096D91B809FD483 /* path_provider_foundation.debug.xcconfig */;
+ buildSettings = {
+ CODE_SIGNING_ALLOWED = NO;
+ CODE_SIGNING_IDENTITY = "-";
+ CODE_SIGNING_REQUIRED = NO;
+ CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/path_provider_foundation";
+ EXPANDED_CODE_SIGN_IDENTITY = "-";
+ IBSC_MODULE = path_provider_foundation;
+ INFOPLIST_FILE = "Target Support Files/path_provider_foundation/ResourceBundle-path_provider_foundation_privacy-path_provider_foundation-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ ONLY_ACTIVE_ARCH = NO;
+ PRODUCT_NAME = path_provider_foundation_privacy;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Debug;
+ };
+ 23EA69A07D0FC5E283A081AF03775A8D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = F98D0085EF3B9B9109CBC5C64C58BBDF /* SSZipArchive.release.xcconfig */;
+ buildSettings = {
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ GCC_PREFIX_HEADER = "Target Support Files/SSZipArchive/SSZipArchive-prefix.pch";
+ GENERATE_INFOPLIST_FILE = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MODULEMAP_FILE = Headers/Public/SSZipArchive/SSZipArchive.modulemap;
+ OTHER_LDFLAGS = "";
+ OTHER_LIBTOOLFLAGS = "";
+ PRIVATE_HEADERS_FOLDER_PATH = "";
+ PRODUCT_MODULE_NAME = SSZipArchive;
+ PRODUCT_NAME = SSZipArchive;
+ PUBLIC_HEADERS_FOLDER_PATH = "";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_INSTALL_OBJC_HEADER = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 2B9E26EAE2CD392AD762421F663075A1 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "POD_CONFIGURATION_DEBUG=1",
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ STRIP_INSTALLED_PRODUCT = NO;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ SYMROOT = "${SRCROOT}/../build";
+ };
+ name = Debug;
+ };
+ 49F92FA6CE93BF7DDA16306C80D69CE1 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 2299047366EA7545B2EAF71D0FB66359 /* flutter_zip_archive.debug.xcconfig */;
+ buildSettings = {
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_BITCODE = NO;
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64\"",
+ "$(inherited)",
+ );
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
+ "$(inherited)",
+ );
+ GCC_PREFIX_HEADER = "Target Support Files/flutter_zip_archive/flutter_zip_archive-prefix.pch";
+ GENERATE_INFOPLIST_FILE = NO;
+ ONLY_ACTIVE_ARCH = NO;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-framework",
+ Flutter,
+ );
+ OTHER_LIBTOOLFLAGS = "";
+ PRIVATE_HEADERS_FOLDER_PATH = "";
+ PRODUCT_MODULE_NAME = flutter_zip_archive;
+ PRODUCT_NAME = flutter_zip_archive;
+ PUBLIC_HEADERS_FOLDER_PATH = "";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_INSTALL_OBJC_HEADER = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ };
+ name = Debug;
+ };
+ 53C02DA0C92ECAD41A6C0C3FE4A4AE89 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 4CC30F89F4EA2AD764170CD84C70E5E1 /* path_provider_foundation.release.xcconfig */;
+ buildSettings = {
+ CODE_SIGNING_ALLOWED = NO;
+ CODE_SIGNING_IDENTITY = "-";
+ CODE_SIGNING_REQUIRED = NO;
+ CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/path_provider_foundation";
+ EXPANDED_CODE_SIGN_IDENTITY = "-";
+ IBSC_MODULE = path_provider_foundation;
+ INFOPLIST_FILE = "Target Support Files/path_provider_foundation/ResourceBundle-path_provider_foundation_privacy-path_provider_foundation-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ PRODUCT_NAME = path_provider_foundation_privacy;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Release;
+ };
+ 55564A5995DF7967D1A36E2BD095BAFC /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = F9D86489E6638235A6B5928C4F86E442 /* Pods-Runner.release.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_BITCODE = NO;
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\"",
+ "$(inherited)",
+ );
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
+ "$(inherited)",
+ );
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MACH_O_TYPE = staticlib;
+ MODULEMAP_FILE = "Target Support Files/Pods-Runner/Pods-Runner.modulemap";
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-framework",
+ Flutter,
+ );
+ OTHER_LIBTOOLFLAGS = "";
+ PODS_ROOT = "$(SRCROOT)";
+ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ };
+ name = Release;
+ };
+ 5AF1AC88E5F655C93D1E3B5012F6FDC8 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "POD_CONFIGURATION_PROFILE=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ STRIP_INSTALLED_PRODUCT = NO;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 5.0;
+ SYMROOT = "${SRCROOT}/../build";
+ };
+ name = Profile;
+ };
+ 604CAC68347BB5069C15EBD08CD7E2B2 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E3BC2E4F8C93222C90102645FA30BA6D /* image_picker_ios.release.xcconfig */;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_BITCODE = NO;
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\"",
+ "$(inherited)",
+ );
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
+ "$(inherited)",
+ );
+ GCC_PREFIX_HEADER = "Target Support Files/image_picker_ios/image_picker_ios-prefix.pch";
+ GENERATE_INFOPLIST_FILE = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MODULEMAP_FILE = Headers/Private/image_picker_ios/image_picker_ios.modulemap;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-framework",
+ Flutter,
+ );
+ OTHER_LIBTOOLFLAGS = "";
+ PRIVATE_HEADERS_FOLDER_PATH = "";
+ PRODUCT_MODULE_NAME = image_picker_ios;
+ PRODUCT_NAME = image_picker_ios;
+ PUBLIC_HEADERS_FOLDER_PATH = "";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_INSTALL_OBJC_HEADER = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ };
+ name = Profile;
+ };
+ 6126B6CC09C1037CA3FF87CF43AC319C /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E3BC2E4F8C93222C90102645FA30BA6D /* image_picker_ios.release.xcconfig */;
+ buildSettings = {
+ CODE_SIGNING_ALLOWED = NO;
+ CODE_SIGNING_IDENTITY = "-";
+ CODE_SIGNING_REQUIRED = NO;
+ CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/image_picker_ios";
+ EXPANDED_CODE_SIGN_IDENTITY = "-";
+ IBSC_MODULE = image_picker_ios;
+ INFOPLIST_FILE = "Target Support Files/image_picker_ios/ResourceBundle-image_picker_ios_privacy-image_picker_ios-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ PRODUCT_NAME = image_picker_ios_privacy;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Release;
+ };
+ 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "POD_CONFIGURATION_RELEASE=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ STRIP_INSTALLED_PRODUCT = NO;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 5.0;
+ SYMROOT = "${SRCROOT}/../build";
+ };
+ name = Release;
+ };
+ 6E21DD5B4EA5A8BE990FF477061EC64E /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E3BC2E4F8C93222C90102645FA30BA6D /* image_picker_ios.release.xcconfig */;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_BITCODE = NO;
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\"",
+ "$(inherited)",
+ );
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
+ "$(inherited)",
+ );
+ GCC_PREFIX_HEADER = "Target Support Files/image_picker_ios/image_picker_ios-prefix.pch";
+ GENERATE_INFOPLIST_FILE = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MODULEMAP_FILE = Headers/Private/image_picker_ios/image_picker_ios.modulemap;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-framework",
+ Flutter,
+ );
+ OTHER_LIBTOOLFLAGS = "";
+ PRIVATE_HEADERS_FOLDER_PATH = "";
+ PRODUCT_MODULE_NAME = image_picker_ios;
+ PRODUCT_NAME = image_picker_ios;
+ PUBLIC_HEADERS_FOLDER_PATH = "";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_INSTALL_OBJC_HEADER = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ };
+ name = Release;
+ };
+ 7056DBD584B8196073F85D3B74DC62BB /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 4CC30F89F4EA2AD764170CD84C70E5E1 /* path_provider_foundation.release.xcconfig */;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_BITCODE = NO;
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\"",
+ "$(inherited)",
+ );
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
+ "$(inherited)",
+ );
+ GCC_PREFIX_HEADER = "Target Support Files/path_provider_foundation/path_provider_foundation-prefix.pch";
+ GENERATE_INFOPLIST_FILE = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MODULEMAP_FILE = Headers/Public/path_provider_foundation/path_provider_foundation.modulemap;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-framework",
+ Flutter,
+ );
+ OTHER_LIBTOOLFLAGS = "";
+ PRIVATE_HEADERS_FOLDER_PATH = "";
+ PRODUCT_MODULE_NAME = path_provider_foundation;
+ PRODUCT_NAME = path_provider_foundation;
+ PUBLIC_HEADERS_FOLDER_PATH = "";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_INSTALL_OBJC_HEADER = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ };
+ name = Profile;
+ };
+ 70F1E3D053D812E3D7E8E74934CC9053 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 2385FC5B4FBB60D7FA9CCDDE76795971 /* Flutter.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ ONLY_ACTIVE_ARCH = NO;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 76E053E47C7357CFF4EA96DF8337031F /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 4FE1C6CD74E6C15C72E75C3C1FEA98BB /* Flutter.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ 7FA3B6A53C0307938616EF71011BED8F /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 53AF3AF6DD7CF1B1E6D7C60883746A1A /* Pods-Runner.debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_BITCODE = NO;
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64\"",
+ "$(inherited)",
+ );
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
+ "$(inherited)",
+ );
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MACH_O_TYPE = staticlib;
+ MODULEMAP_FILE = "Target Support Files/Pods-Runner/Pods-Runner.modulemap";
+ ONLY_ACTIVE_ARCH = NO;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-framework",
+ Flutter,
+ );
+ OTHER_LIBTOOLFLAGS = "";
+ PODS_ROOT = "$(SRCROOT)";
+ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ };
+ name = Debug;
+ };
+ 9F19BB11585FF1A946F5FC799C5C12E5 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 4CC30F89F4EA2AD764170CD84C70E5E1 /* path_provider_foundation.release.xcconfig */;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CODE_SIGNING_ALLOWED = NO;
+ CODE_SIGNING_IDENTITY = "-";
+ CODE_SIGNING_REQUIRED = NO;
+ CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/path_provider_foundation";
+ EXPANDED_CODE_SIGN_IDENTITY = "-";
+ IBSC_MODULE = path_provider_foundation;
+ INFOPLIST_FILE = "Target Support Files/path_provider_foundation/ResourceBundle-path_provider_foundation_privacy-path_provider_foundation-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ PRODUCT_NAME = path_provider_foundation_privacy;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Profile;
+ };
+ A4B090C63F1D344BD8853CEF2DBE83DF /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = F98D0085EF3B9B9109CBC5C64C58BBDF /* SSZipArchive.release.xcconfig */;
+ buildSettings = {
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ GCC_PREFIX_HEADER = "Target Support Files/SSZipArchive/SSZipArchive-prefix.pch";
+ GENERATE_INFOPLIST_FILE = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MODULEMAP_FILE = Headers/Public/SSZipArchive/SSZipArchive.modulemap;
+ OTHER_LDFLAGS = "";
+ OTHER_LIBTOOLFLAGS = "";
+ PRIVATE_HEADERS_FOLDER_PATH = "";
+ PRODUCT_MODULE_NAME = SSZipArchive;
+ PRODUCT_NAME = SSZipArchive;
+ PUBLIC_HEADERS_FOLDER_PATH = "";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_INSTALL_OBJC_HEADER = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ AA09EBB112E91AEA7286986E224CA0A1 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E3BC2E4F8C93222C90102645FA30BA6D /* image_picker_ios.release.xcconfig */;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CODE_SIGNING_ALLOWED = NO;
+ CODE_SIGNING_IDENTITY = "-";
+ CODE_SIGNING_REQUIRED = NO;
+ CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/image_picker_ios";
+ EXPANDED_CODE_SIGN_IDENTITY = "-";
+ IBSC_MODULE = image_picker_ios;
+ INFOPLIST_FILE = "Target Support Files/image_picker_ios/ResourceBundle-image_picker_ios_privacy-image_picker_ios-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ PRODUCT_NAME = image_picker_ios_privacy;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Profile;
+ };
+ B2CEAD07B5F5486F6FB9F29277041E5E /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = A3B27A72CBE2C688B0471E28255E900C /* SSZipArchive.debug.xcconfig */;
+ buildSettings = {
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ GCC_PREFIX_HEADER = "Target Support Files/SSZipArchive/SSZipArchive-prefix.pch";
+ GENERATE_INFOPLIST_FILE = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MODULEMAP_FILE = Headers/Public/SSZipArchive/SSZipArchive.modulemap;
+ ONLY_ACTIVE_ARCH = NO;
+ OTHER_LDFLAGS = "";
+ OTHER_LIBTOOLFLAGS = "";
+ PRIVATE_HEADERS_FOLDER_PATH = "";
+ PRODUCT_MODULE_NAME = SSZipArchive;
+ PRODUCT_NAME = SSZipArchive;
+ PUBLIC_HEADERS_FOLDER_PATH = "";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_INSTALL_OBJC_HEADER = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ B60D6D9B99547026EDE222EAEEA8E652 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7F76DED38DDBDEDE2413B263B130FF71 /* flutter_zip_archive.release.xcconfig */;
+ buildSettings = {
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_BITCODE = NO;
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\"",
+ "$(inherited)",
+ );
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
+ "$(inherited)",
+ );
+ GCC_PREFIX_HEADER = "Target Support Files/flutter_zip_archive/flutter_zip_archive-prefix.pch";
+ GENERATE_INFOPLIST_FILE = NO;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-framework",
+ Flutter,
+ );
+ OTHER_LIBTOOLFLAGS = "";
+ PRIVATE_HEADERS_FOLDER_PATH = "";
+ PRODUCT_MODULE_NAME = flutter_zip_archive;
+ PRODUCT_NAME = flutter_zip_archive;
+ PUBLIC_HEADERS_FOLDER_PATH = "";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_INSTALL_OBJC_HEADER = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ };
+ name = Release;
+ };
+ B98074557765BD39463EF2359AB155A3 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7F76DED38DDBDEDE2413B263B130FF71 /* flutter_zip_archive.release.xcconfig */;
+ buildSettings = {
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_BITCODE = NO;
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\"",
+ "$(inherited)",
+ );
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
+ "$(inherited)",
+ );
+ GCC_PREFIX_HEADER = "Target Support Files/flutter_zip_archive/flutter_zip_archive-prefix.pch";
+ GENERATE_INFOPLIST_FILE = NO;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-framework",
+ Flutter,
+ );
+ OTHER_LIBTOOLFLAGS = "";
+ PRIVATE_HEADERS_FOLDER_PATH = "";
+ PRODUCT_MODULE_NAME = flutter_zip_archive;
+ PRODUCT_NAME = flutter_zip_archive;
+ PUBLIC_HEADERS_FOLDER_PATH = "";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_INSTALL_OBJC_HEADER = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ };
+ name = Profile;
+ };
+ BCD56993E292B885BC95CCEA7D9EEC4E /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 3D4D3DC9F2C625816586F125624834D0 /* image_picker_ios.debug.xcconfig */;
+ buildSettings = {
+ CODE_SIGNING_ALLOWED = NO;
+ CODE_SIGNING_IDENTITY = "-";
+ CODE_SIGNING_REQUIRED = NO;
+ CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/image_picker_ios";
+ EXPANDED_CODE_SIGN_IDENTITY = "-";
+ IBSC_MODULE = image_picker_ios;
+ INFOPLIST_FILE = "Target Support Files/image_picker_ios/ResourceBundle-image_picker_ios_privacy-image_picker_ios-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ ONLY_ACTIVE_ARCH = NO;
+ PRODUCT_NAME = image_picker_ios_privacy;
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Debug;
+ };
+ C8B9562D5DE5582809D6D532A59DAB38 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 3D4D3DC9F2C625816586F125624834D0 /* image_picker_ios.debug.xcconfig */;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_BITCODE = NO;
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64\"",
+ "$(inherited)",
+ );
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
+ "$(inherited)",
+ );
+ GCC_PREFIX_HEADER = "Target Support Files/image_picker_ios/image_picker_ios-prefix.pch";
+ GENERATE_INFOPLIST_FILE = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MODULEMAP_FILE = Headers/Private/image_picker_ios/image_picker_ios.modulemap;
+ ONLY_ACTIVE_ARCH = NO;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-framework",
+ Flutter,
+ );
+ OTHER_LIBTOOLFLAGS = "";
+ PRIVATE_HEADERS_FOLDER_PATH = "";
+ PRODUCT_MODULE_NAME = image_picker_ios;
+ PRODUCT_NAME = image_picker_ios;
+ PUBLIC_HEADERS_FOLDER_PATH = "";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+ SWIFT_INSTALL_OBJC_HEADER = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ };
+ name = Debug;
+ };
+ E46E3C835464CCAA801C31C1B1216B80 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = EBE9BF3E22F65735A1D716F2DBFBA401 /* Pods-Runner.profile.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO;
+ "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+ ENABLE_BITCODE = NO;
+ ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ "EXCLUDED_ARCHS[sdk=iphoneos*]" = "$(inherited) armv7";
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "$(inherited) i386";
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64\"",
+ "$(inherited)",
+ );
+ "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
+ "\"/Users/william/dev/flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator\"",
+ "$(inherited)",
+ );
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MACH_O_TYPE = staticlib;
+ MODULEMAP_FILE = "Target Support Files/Pods-Runner/Pods-Runner.modulemap";
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-framework",
+ Flutter,
+ );
+ OTHER_LIBTOOLFLAGS = "";
+ PODS_ROOT = "$(SRCROOT)";
+ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ };
+ name = Profile;
+ };
+ FB4B781D3E4B2E85C6448C7B77E40A53 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 4FE1C6CD74E6C15C72E75C3C1FEA98BB /* Flutter.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CLANG_ENABLE_OBJC_WEAK = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 005080B948893987FCCFE8FF88AB389B /* Build configuration list for PBXNativeTarget "SSZipArchive" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ B2CEAD07B5F5486F6FB9F29277041E5E /* Debug */,
+ A4B090C63F1D344BD8853CEF2DBE83DF /* Profile */,
+ 23EA69A07D0FC5E283A081AF03775A8D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 137DF6EB8A85C6355521BB058DBA254A /* Build configuration list for PBXNativeTarget "path_provider_foundation" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 06A8ADFC21B5D8D7339269BAD24145C3 /* Debug */,
+ 7056DBD584B8196073F85D3B74DC62BB /* Profile */,
+ 03C2C2C858DA703836C5C5AE6CAB8770 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 141E73221CA08545B6147F4A7A55EFC1 /* Build configuration list for PBXNativeTarget "image_picker_ios-image_picker_ios_privacy" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ BCD56993E292B885BC95CCEA7D9EEC4E /* Debug */,
+ AA09EBB112E91AEA7286986E224CA0A1 /* Profile */,
+ 6126B6CC09C1037CA3FF87CF43AC319C /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 32BFB2019674B7AE1876D4B4B24D5553 /* Build configuration list for PBXNativeTarget "flutter_zip_archive" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 49F92FA6CE93BF7DDA16306C80D69CE1 /* Debug */,
+ B98074557765BD39463EF2359AB155A3 /* Profile */,
+ B60D6D9B99547026EDE222EAEEA8E652 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 2B9E26EAE2CD392AD762421F663075A1 /* Debug */,
+ 5AF1AC88E5F655C93D1E3B5012F6FDC8 /* Profile */,
+ 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 5B880EE3869032F8259AEFBB0A656E74 /* Build configuration list for PBXNativeTarget "image_picker_ios" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C8B9562D5DE5582809D6D532A59DAB38 /* Debug */,
+ 604CAC68347BB5069C15EBD08CD7E2B2 /* Profile */,
+ 6E21DD5B4EA5A8BE990FF477061EC64E /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 94078A06C17E946ADC1F2C06726219E5 /* Build configuration list for PBXAggregateTarget "Flutter" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 70F1E3D053D812E3D7E8E74934CC9053 /* Debug */,
+ 76E053E47C7357CFF4EA96DF8337031F /* Profile */,
+ FB4B781D3E4B2E85C6448C7B77E40A53 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ A6F336FF3519C47857372EC19548EAB1 /* Build configuration list for PBXNativeTarget "Pods-Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7FA3B6A53C0307938616EF71011BED8F /* Debug */,
+ E46E3C835464CCAA801C31C1B1216B80 /* Profile */,
+ 55564A5995DF7967D1A36E2BD095BAFC /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ E36BFA8FF115BE5EC0C9F37E4B5C3E44 /* Build configuration list for PBXNativeTarget "path_provider_foundation-path_provider_foundation_privacy" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1E8B0F6E1BD9FD7D7A2E2D84E0F8344E /* Debug */,
+ 9F19BB11585FF1A946F5FC799C5C12E5 /* Profile */,
+ 53C02DA0C92ECAD41A6C0C3FE4A4AE89 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+}
diff --git a/example/ios/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Flutter.xcscheme b/example/ios/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Flutter.xcscheme
new file mode 100644
index 0000000..0461e6a
--- /dev/null
+++ b/example/ios/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Flutter.xcscheme
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/Pods/Pods.xcodeproj/xcshareddata/xcschemes/flutter_zip_archive.xcscheme b/example/ios/Pods/Pods.xcodeproj/xcshareddata/xcschemes/flutter_zip_archive.xcscheme
new file mode 100644
index 0000000..b507546
--- /dev/null
+++ b/example/ios/Pods/Pods.xcodeproj/xcshareddata/xcschemes/flutter_zip_archive.xcscheme
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/Flutter.xcscheme b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/Flutter.xcscheme
new file mode 100644
index 0000000..efb76cc
--- /dev/null
+++ b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/Flutter.xcscheme
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/Pods-Runner.xcscheme b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/Pods-Runner.xcscheme
new file mode 100644
index 0000000..79fafd1
--- /dev/null
+++ b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/Pods-Runner.xcscheme
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/SSZipArchive.xcscheme b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/SSZipArchive.xcscheme
new file mode 100644
index 0000000..3df68ec
--- /dev/null
+++ b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/SSZipArchive.xcscheme
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/flutter_zip_archive.xcscheme b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/flutter_zip_archive.xcscheme
new file mode 100644
index 0000000..38c9eab
--- /dev/null
+++ b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/flutter_zip_archive.xcscheme
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/image_picker_ios-image_picker_ios_privacy.xcscheme b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/image_picker_ios-image_picker_ios_privacy.xcscheme
new file mode 100644
index 0000000..95a7ce1
--- /dev/null
+++ b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/image_picker_ios-image_picker_ios_privacy.xcscheme
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/image_picker_ios.xcscheme b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/image_picker_ios.xcscheme
new file mode 100644
index 0000000..5858e18
--- /dev/null
+++ b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/image_picker_ios.xcscheme
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/path_provider_foundation-path_provider_foundation_privacy.xcscheme b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/path_provider_foundation-path_provider_foundation_privacy.xcscheme
new file mode 100644
index 0000000..9caa789
--- /dev/null
+++ b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/path_provider_foundation-path_provider_foundation_privacy.xcscheme
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/path_provider_foundation.xcscheme b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/path_provider_foundation.xcscheme
new file mode 100644
index 0000000..6ea46c6
--- /dev/null
+++ b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/path_provider_foundation.xcscheme
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/xcschememanagement.plist b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..25284e7
--- /dev/null
+++ b/example/ios/Pods/Pods.xcodeproj/xcuserdata/william.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,92 @@
+
+
+
+
+ SchemeUserState
+
+ Flutter.xcscheme
+
+ isShown
+
+ orderHint
+ 0
+
+ Flutter.xcscheme_^#shared#^_
+
+ isShown
+
+ orderHint
+ 8
+
+ Pods-Runner.xcscheme
+
+ isShown
+
+ orderHint
+ 6
+
+ SSZipArchive.xcscheme
+
+ isShown
+
+ orderHint
+ 7
+
+ flutter_zip_archive.xcscheme
+
+ isShown
+
+ orderHint
+ 1
+
+ flutter_zip_archive.xcscheme_^#shared#^_
+
+ isShown
+
+ orderHint
+ 9
+
+ image_picker_ios-image_picker_ios_privacy.xcscheme
+
+ isShown
+
+ orderHint
+ 3
+
+ image_picker_ios.xcscheme
+
+ isShown
+
+ orderHint
+ 2
+
+ path_provider_foundation-path_provider_foundation_privacy.xcscheme
+
+ isShown
+
+ orderHint
+ 5
+
+ path_provider_foundation.xcscheme
+
+ isShown
+
+ orderHint
+ 4
+
+
+ SuppressBuildableAutocreation
+
+ 1EFDDC32A34D56D411E640A81DCD9E73
+
+ primary
+
+
+ 90EC34F1BB6A4F41C55C258475A7E651
+
+ primary
+
+
+
+
+
diff --git a/example/ios/Pods/SSZipArchive/LICENSE.txt b/example/ios/Pods/SSZipArchive/LICENSE.txt
new file mode 100644
index 0000000..1cc4a4a
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/LICENSE.txt
@@ -0,0 +1,20 @@
+Copyright (c) 2013-2021, ZipArchive, https://github.com/ZipArchive
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/example/ios/Pods/SSZipArchive/README.md b/example/ios/Pods/SSZipArchive/README.md
new file mode 100644
index 0000000..7e038c3
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/README.md
@@ -0,0 +1,88 @@
+[](https://github.com/ZipArchive/ZipArchive/actions?query=workflow%3ACI)
+
+# SSZipArchive
+
+ZipArchive is a simple utility class for zipping and unzipping files on iOS, macOS and tvOS.
+
+- Unzip zip files;
+- Unzip password protected zip files;
+- Unzip AES encrypted zip files;
+- Create zip files;
+- Create large (> 4.3Gb) files;
+- Create password protected zip files;
+- Create AES encrypted zip files;
+- Choose compression level;
+- Zip-up NSData instances. (with a filename)
+
+## Installation and Setup
+
+*The main release branch is configured to support Objective-C and Swift 3+.*
+
+SSZipArchive works on Xcode 7 and above, iOS 9 and above, tvOS 9 and above, macOS 10.9 and above, watchOS 2 and above.
+
+### CocoaPods
+In your Podfile:
+`pod 'SSZipArchive'`
+
+You should define your minimum deployment target explicitly, like:
+`platform :ios, '9.0'`
+
+Recommended CocoaPods version should be at least CocoaPods 1.7.5.
+
+### SPM
+Add a Swift Package reference to https://github.com/ZipArchive/ZipArchive.git (SSZipArchive 2.4.2 and higher or master)
+
+### Carthage
+In your Cartfile:
+`github "ZipArchive/ZipArchive"`
+
+Note: We are no longer releasing a Carthage pre-built package as of 2.2.3. Developers are encouraged to build one themselves.
+
+### Manual
+
+1. Add the `SSZipArchive` and `minizip` folders to your project.
+2. Add the `libz` and `libiconv` libraries to your target.
+3. Add the `Security` framework to your target.
+4. Add the following GCC_PREPROCESSOR_DEFINITIONS: `HAVE_INTTYPES_H HAVE_PKCRYPT HAVE_STDINT_H HAVE_WZAES HAVE_ZLIB $(inherited)`.
+
+SSZipArchive requires ARC.
+
+## Usage
+
+### Objective-C
+
+```objective-c
+
+//Import "#import " for SPM/Carthage, and "#import " for CocoaPods.
+
+// Create
+[SSZipArchive createZipFileAtPath:zipPath withContentsOfDirectory:sampleDataPath];
+
+// Unzip
+[SSZipArchive unzipFileAtPath:zipPath toDestination:unzipPath];
+```
+
+### Swift
+
+```swift
+//Import "import ZipArchive" for SPM/Carthage, and "import SSZipArchive" for CocoaPods.
+
+// Create
+SSZipArchive.createZipFileAtPath(zipPath, withContentsOfDirectory: sampleDataPath)
+
+// Unzip
+SSZipArchive.unzipFileAtPath(zipPath, toDestination: unzipPath)
+```
+
+## License
+
+SSZipArchive is protected under the [MIT license](https://github.com/samsoffes/ssziparchive/raw/master/LICENSE) and our slightly modified version of [minizip-ng (formally minizip)](https://github.com/zlib-ng/minizip-ng) 3.0.2 is licensed under the [Zlib license](https://www.zlib.net/zlib_license.html).
+
+## Acknowledgments
+
+* Big thanks to *aish* for creating [ZipArchive](https://code.google.com/archive/p/ziparchive/). The project that inspired SSZipArchive.
+* Thank you [@soffes](https://github.com/soffes) for the actual name of SSZipArchive.
+* Thank you [@randomsequence](https://github.com/randomsequence) for implementing the creation support tech.
+* Thank you [@johnezang](https://github.com/johnezang) for all his amazing help along the way.
+* Thank you [@nmoinvaz](https://github.com/nmoinvaz) for minizip-ng (formally minizip), the core of ZipArchive.
+* Thank you to [all the contributors](https://github.com/ZipArchive/ZipArchive/graphs/contributors).
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/SSZipArchive.h b/example/ios/Pods/SSZipArchive/SSZipArchive/SSZipArchive.h
new file mode 100644
index 0000000..242b9a7
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/SSZipArchive.h
@@ -0,0 +1,165 @@
+//
+// SSZipArchive.h
+// SSZipArchive
+//
+// Created by Sam Soffes on 7/21/10.
+//
+
+#ifndef _SSZIPARCHIVE_H
+#define _SSZIPARCHIVE_H
+
+#import
+
+#import "SSZipCommon.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+extern NSString *const SSZipArchiveErrorDomain;
+typedef NS_ENUM(NSInteger, SSZipArchiveErrorCode) {
+ SSZipArchiveErrorCodeFailedOpenZipFile = -1,
+ SSZipArchiveErrorCodeFailedOpenFileInZip = -2,
+ SSZipArchiveErrorCodeFileInfoNotLoadable = -3,
+ SSZipArchiveErrorCodeFileContentNotReadable = -4,
+ SSZipArchiveErrorCodeFailedToWriteFile = -5,
+ SSZipArchiveErrorCodeInvalidArguments = -6,
+};
+
+@protocol SSZipArchiveDelegate;
+
+@interface SSZipArchive : NSObject
+
+// Password check
++ (BOOL)isFilePasswordProtectedAtPath:(NSString *)path;
++ (BOOL)isPasswordValidForArchiveAtPath:(NSString *)path password:(NSString *)pw error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NOTHROW;
+
+// Total payload size
++ (NSNumber *)payloadSizeForArchiveAtPath:(NSString *)path error:(NSError **)error;
+
+// Unzip
++ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination;
++ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination delegate:(nullable id)delegate;
+
++ (BOOL)unzipFileAtPath:(NSString *)path
+ toDestination:(NSString *)destination
+ overwrite:(BOOL)overwrite
+ password:(nullable NSString *)password
+ error:(NSError * *)error;
+
++ (BOOL)unzipFileAtPath:(NSString *)path
+ toDestination:(NSString *)destination
+ overwrite:(BOOL)overwrite
+ password:(nullable NSString *)password
+ error:(NSError * *)error
+ delegate:(nullable id)delegate NS_REFINED_FOR_SWIFT;
+
++ (BOOL)unzipFileAtPath:(NSString *)path
+ toDestination:(NSString *)destination
+ preserveAttributes:(BOOL)preserveAttributes
+ overwrite:(BOOL)overwrite
+ password:(nullable NSString *)password
+ error:(NSError * *)error
+ delegate:(nullable id)delegate;
+
++ (BOOL)unzipFileAtPath:(NSString *)path
+ toDestination:(NSString *)destination
+ progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler
+ completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler;
+
++ (BOOL)unzipFileAtPath:(NSString *)path
+ toDestination:(NSString *)destination
+ overwrite:(BOOL)overwrite
+ password:(nullable NSString *)password
+ progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler
+ completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler;
+
++ (BOOL)unzipFileAtPath:(NSString *)path
+ toDestination:(NSString *)destination
+ preserveAttributes:(BOOL)preserveAttributes
+ overwrite:(BOOL)overwrite
+ nestedZipLevel:(NSInteger)nestedZipLevel
+ password:(nullable NSString *)password
+ error:(NSError **)error
+ delegate:(nullable id)delegate
+ progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler
+ completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler;
+
+// Zip
+// default compression level is Z_DEFAULT_COMPRESSION (from "zlib.h")
+// keepParentDirectory: if YES, then unzipping will give `directoryName/fileName`. If NO, then unzipping will just give `fileName`. Default is NO.
+
+// without password
++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths;
++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath;
+
++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath keepParentDirectory:(BOOL)keepParentDirectory;
+
+// with optional password, default encryption is AES
+// don't use AES if you need compatibility with native macOS unzip and Archive Utility
++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths withPassword:(nullable NSString *)password;
++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths withPassword:(nullable NSString *)password progressHandler:(void(^ _Nullable)(NSUInteger entryNumber, NSUInteger total))progressHandler;
++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath withPassword:(nullable NSString *)password;
++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath keepParentDirectory:(BOOL)keepParentDirectory withPassword:(nullable NSString *)password;
++ (BOOL)createZipFileAtPath:(NSString *)path
+ withContentsOfDirectory:(NSString *)directoryPath
+ keepParentDirectory:(BOOL)keepParentDirectory
+ withPassword:(nullable NSString *)password
+ andProgressHandler:(void(^ _Nullable)(NSUInteger entryNumber, NSUInteger total))progressHandler;
++ (BOOL)createZipFileAtPath:(NSString *)path
+ withContentsOfDirectory:(NSString *)directoryPath
+ keepParentDirectory:(BOOL)keepParentDirectory
+ compressionLevel:(int)compressionLevel
+ password:(nullable NSString *)password
+ AES:(BOOL)aes
+ progressHandler:(void(^ _Nullable)(NSUInteger entryNumber, NSUInteger total))progressHandler;
+//suport symlink compress --file
++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths withPassword:(nullable NSString *)password keepSymlinks:(BOOL)keeplinks;
+//suport symlink compress --directory
++ (BOOL)createZipFileAtPath:(NSString *)path
+ withContentsOfDirectory:(NSString *)directoryPath
+ keepParentDirectory:(BOOL)keepParentDirectory
+ compressionLevel:(int)compressionLevel
+ password:(nullable NSString *)password
+ AES:(BOOL)aes
+ progressHandler:(void(^ _Nullable)(NSUInteger entryNumber, NSUInteger total))progressHandler
+ keepSymlinks:(BOOL)keeplinks;
+
+- (instancetype)init NS_UNAVAILABLE;
+- (instancetype)initWithPath:(NSString *)path NS_DESIGNATED_INITIALIZER;
+- (BOOL)open;
+- (BOOL)openForAppending;
+
+/// write empty folder
+- (BOOL)writeFolderAtPath:(NSString *)path withFolderName:(NSString *)folderName withPassword:(nullable NSString *)password;
+/// write file
+- (BOOL)writeFile:(NSString *)path withPassword:(nullable NSString *)password;
+- (BOOL)writeFileAtPath:(NSString *)path withFileName:(nullable NSString *)fileName withPassword:(nullable NSString *)password;
+- (BOOL)writeFileAtPath:(NSString *)path withFileName:(nullable NSString *)fileName compressionLevel:(int)compressionLevel password:(nullable NSString *)password AES:(BOOL)aes;
+///write symlink files
+- (BOOL)writeSymlinkFileAtPath:(NSString *)path withFileName:(nullable NSString *)fileName compressionLevel:(int)compressionLevel password:(nullable NSString *)password AES:(BOOL)aes;
+/// write data
+- (BOOL)writeData:(NSData *)data filename:(nullable NSString *)filename withPassword:(nullable NSString *)password;
+- (BOOL)writeData:(NSData *)data filename:(nullable NSString *)filename compressionLevel:(int)compressionLevel password:(nullable NSString *)password AES:(BOOL)aes;
+
+- (BOOL)close;
+
+@end
+
+@protocol SSZipArchiveDelegate
+
+@optional
+
+- (void)zipArchiveWillUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo;
+- (void)zipArchiveDidUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo unzippedPath:(NSString *)unzippedPath;
+
+- (BOOL)zipArchiveShouldUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo;
+- (void)zipArchiveWillUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo;
+- (void)zipArchiveDidUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo;
+- (void)zipArchiveDidUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath unzippedFilePath:(NSString *)unzippedFilePath;
+
+- (void)zipArchiveProgressEvent:(unsigned long long)loaded total:(unsigned long long)total;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* _SSZIPARCHIVE_H */
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/SSZipArchive.m b/example/ios/Pods/SSZipArchive/SSZipArchive/SSZipArchive.m
new file mode 100644
index 0000000..7184d10
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/SSZipArchive.m
@@ -0,0 +1,1433 @@
+//
+// SSZipArchive.m
+// SSZipArchive
+//
+// Created by Sam Soffes on 7/21/10.
+//
+
+#import "SSZipArchive.h"
+#include "minizip/mz_compat.h"
+#include "minizip/mz_zip.h"
+#include "minizip/mz_os.h"
+#include
+#include
+
+NSString *const SSZipArchiveErrorDomain = @"SSZipArchiveErrorDomain";
+
+#define CHUNK 16384
+
+int _zipOpenEntry(zipFile entry, NSString *name, const zip_fileinfo *zipfi, int level, NSString *password, BOOL aes);
+BOOL _fileIsSymbolicLink(const unz_file_info *fileInfo);
+
+#ifndef API_AVAILABLE
+// Xcode 7- compatibility
+#define API_AVAILABLE(...)
+#endif
+
+@interface NSData(SSZipArchive)
+- (NSString *)_base64RFC4648 API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0));
+- (NSString *)_hexString;
+@end
+
+@interface NSString (SSZipArchive)
+- (NSString *)_sanitizedPath;
+@end
+
+@interface SSZipArchive ()
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+@end
+
+@implementation SSZipArchive
+{
+ /// path for zip file
+ NSString *_path;
+ zipFile _zip;
+}
+
+#pragma mark - Password check
+
++ (BOOL)isFilePasswordProtectedAtPath:(NSString *)path {
+ // Begin opening
+ zipFile zip = unzOpen(path.fileSystemRepresentation);
+ if (zip == NULL) {
+ return NO;
+ }
+
+ BOOL passwordProtected = NO;
+ int ret = unzGoToFirstFile(zip);
+ if (ret == UNZ_OK) {
+ do {
+ ret = unzOpenCurrentFile(zip);
+ if (ret != UNZ_OK) {
+ // attempting with an arbitrary password to workaround `unzOpenCurrentFile` limitation on AES encrypted files
+ ret = unzOpenCurrentFilePassword(zip, "");
+ unzCloseCurrentFile(zip);
+ if (ret == UNZ_OK || ret == MZ_PASSWORD_ERROR) {
+ passwordProtected = YES;
+ }
+ break;
+ }
+ unz_file_info fileInfo = {};
+ ret = unzGetCurrentFileInfo(zip, &fileInfo, NULL, 0, NULL, 0, NULL, 0);
+ unzCloseCurrentFile(zip);
+ if (ret != UNZ_OK) {
+ break;
+ } else if ((fileInfo.flag & MZ_ZIP_FLAG_ENCRYPTED) == 1) {
+ passwordProtected = YES;
+ break;
+ }
+
+ ret = unzGoToNextFile(zip);
+ } while (ret == UNZ_OK);
+ }
+
+ unzClose(zip);
+ return passwordProtected;
+}
+
++ (BOOL)isPasswordValidForArchiveAtPath:(NSString *)path password:(NSString *)pw error:(NSError **)error {
+ if (error) {
+ *error = nil;
+ }
+
+ zipFile zip = unzOpen(path.fileSystemRepresentation);
+ if (zip == NULL) {
+ if (error) {
+ *error = [NSError errorWithDomain:SSZipArchiveErrorDomain
+ code:SSZipArchiveErrorCodeFailedOpenZipFile
+ userInfo:@{NSLocalizedDescriptionKey: @"failed to open zip file"}];
+ }
+ return NO;
+ }
+
+ // Initialize passwordValid to YES (No password required)
+ BOOL passwordValid = YES;
+ int ret = unzGoToFirstFile(zip);
+ if (ret == UNZ_OK) {
+ do {
+ if (pw.length == 0) {
+ ret = unzOpenCurrentFile(zip);
+ } else {
+ ret = unzOpenCurrentFilePassword(zip, [pw cStringUsingEncoding:NSUTF8StringEncoding]);
+ }
+ if (ret != UNZ_OK) {
+ if (ret != MZ_PASSWORD_ERROR) {
+ if (error) {
+ *error = [NSError errorWithDomain:SSZipArchiveErrorDomain
+ code:SSZipArchiveErrorCodeFailedOpenFileInZip
+ userInfo:@{NSLocalizedDescriptionKey: @"failed to open file in zip archive"}];
+ }
+ }
+ passwordValid = NO;
+ break;
+ }
+ unz_file_info fileInfo = {};
+ ret = unzGetCurrentFileInfo(zip, &fileInfo, NULL, 0, NULL, 0, NULL, 0);
+ if (ret != UNZ_OK) {
+ if (error) {
+ *error = [NSError errorWithDomain:SSZipArchiveErrorDomain
+ code:SSZipArchiveErrorCodeFileInfoNotLoadable
+ userInfo:@{NSLocalizedDescriptionKey: @"failed to retrieve info for file"}];
+ }
+ passwordValid = NO;
+ break;
+ } else if ((fileInfo.flag & 1) == 1) {
+ unsigned char buffer[10] = {0};
+ int readBytes = unzReadCurrentFile(zip, buffer, (unsigned)MIN(10UL,fileInfo.uncompressed_size));
+ if (readBytes < 0) {
+ // Let's assume error Z_DATA_ERROR is caused by an invalid password
+ // Let's assume other errors are caused by Content Not Readable
+ if (readBytes != Z_DATA_ERROR) {
+ if (error) {
+ *error = [NSError errorWithDomain:SSZipArchiveErrorDomain
+ code:SSZipArchiveErrorCodeFileContentNotReadable
+ userInfo:@{NSLocalizedDescriptionKey: @"failed to read contents of file entry"}];
+ }
+ }
+ passwordValid = NO;
+ break;
+ }
+ passwordValid = YES;
+ break;
+ }
+
+ unzCloseCurrentFile(zip);
+ ret = unzGoToNextFile(zip);
+ } while (ret == UNZ_OK);
+ }
+
+ unzClose(zip);
+ return passwordValid;
+}
+
++ (NSNumber *)payloadSizeForArchiveAtPath:(NSString *)path error:(NSError **)error {
+ if (error) {
+ *error = nil;
+ }
+
+ zipFile zip = unzOpen(path.fileSystemRepresentation);
+ if (zip == NULL) {
+ if (error) {
+ *error = [NSError errorWithDomain:SSZipArchiveErrorDomain
+ code:SSZipArchiveErrorCodeFailedOpenZipFile
+ userInfo:@{NSLocalizedDescriptionKey: @"failed to open zip file"}];
+ }
+ return @0;
+ }
+
+ unsigned long long totalSize = 0;
+ int ret = unzGoToFirstFile(zip);
+ if (ret == UNZ_OK) {
+ do {
+ ret = unzOpenCurrentFile(zip);
+ if (ret != UNZ_OK) {
+ if (error) {
+ *error = [NSError errorWithDomain:SSZipArchiveErrorDomain
+ code:SSZipArchiveErrorCodeFailedOpenFileInZip
+ userInfo:@{NSLocalizedDescriptionKey: @"failed to open file in zip archive"}];
+ }
+ break;
+ }
+ unz_file_info fileInfo = {};
+ ret = unzGetCurrentFileInfo(zip, &fileInfo, NULL, 0, NULL, 0, NULL, 0);
+ if (ret != UNZ_OK) {
+ if (error) {
+ *error = [NSError errorWithDomain:SSZipArchiveErrorDomain
+ code:SSZipArchiveErrorCodeFileInfoNotLoadable
+ userInfo:@{NSLocalizedDescriptionKey: @"failed to retrieve info for file"}];
+ }
+ break;
+ }
+
+ totalSize += fileInfo.uncompressed_size;
+
+ unzCloseCurrentFile(zip);
+ ret = unzGoToNextFile(zip);
+ } while (ret == UNZ_OK);
+ }
+
+ unzClose(zip);
+
+ return [NSNumber numberWithUnsignedLongLong:totalSize];
+}
+
+#pragma mark - Unzipping
+
++ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination
+{
+ return [self unzipFileAtPath:path toDestination:destination delegate:nil];
+}
+
++ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination overwrite:(BOOL)overwrite password:(nullable NSString *)password error:(NSError **)error
+{
+ return [self unzipFileAtPath:path toDestination:destination preserveAttributes:YES overwrite:overwrite password:password error:error delegate:nil progressHandler:nil completionHandler:nil];
+}
+
++ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination delegate:(nullable id)delegate
+{
+ return [self unzipFileAtPath:path toDestination:destination preserveAttributes:YES overwrite:YES password:nil error:nil delegate:delegate progressHandler:nil completionHandler:nil];
+}
+
++ (BOOL)unzipFileAtPath:(NSString *)path
+ toDestination:(NSString *)destination
+ overwrite:(BOOL)overwrite
+ password:(nullable NSString *)password
+ error:(NSError **)error
+ delegate:(nullable id)delegate
+{
+ return [self unzipFileAtPath:path toDestination:destination preserveAttributes:YES overwrite:overwrite password:password error:error delegate:delegate progressHandler:nil completionHandler:nil];
+}
+
++ (BOOL)unzipFileAtPath:(NSString *)path
+ toDestination:(NSString *)destination
+ overwrite:(BOOL)overwrite
+ password:(NSString *)password
+ progressHandler:(void (^)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler
+ completionHandler:(void (^)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler
+{
+ return [self unzipFileAtPath:path toDestination:destination preserveAttributes:YES overwrite:overwrite password:password error:nil delegate:nil progressHandler:progressHandler completionHandler:completionHandler];
+}
+
++ (BOOL)unzipFileAtPath:(NSString *)path
+ toDestination:(NSString *)destination
+ progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler
+ completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler
+{
+ return [self unzipFileAtPath:path toDestination:destination preserveAttributes:YES overwrite:YES password:nil error:nil delegate:nil progressHandler:progressHandler completionHandler:completionHandler];
+}
+
++ (BOOL)unzipFileAtPath:(NSString *)path
+ toDestination:(NSString *)destination
+ preserveAttributes:(BOOL)preserveAttributes
+ overwrite:(BOOL)overwrite
+ password:(nullable NSString *)password
+ error:(NSError * *)error
+ delegate:(nullable id)delegate
+{
+ return [self unzipFileAtPath:path toDestination:destination preserveAttributes:preserveAttributes overwrite:overwrite password:password error:error delegate:delegate progressHandler:nil completionHandler:nil];
+}
+
++ (BOOL)unzipFileAtPath:(NSString *)path
+ toDestination:(NSString *)destination
+ preserveAttributes:(BOOL)preserveAttributes
+ overwrite:(BOOL)overwrite
+ password:(nullable NSString *)password
+ error:(NSError **)error
+ delegate:(nullable id)delegate
+ progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler
+ completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler
+{
+ return [self unzipFileAtPath:path toDestination:destination preserveAttributes:preserveAttributes overwrite:overwrite nestedZipLevel:0 password:password error:error delegate:delegate progressHandler:progressHandler completionHandler:completionHandler];
+}
+
++ (BOOL)unzipFileAtPath:(NSString *)path
+ toDestination:(NSString *)destination
+ preserveAttributes:(BOOL)preserveAttributes
+ overwrite:(BOOL)overwrite
+ nestedZipLevel:(NSInteger)nestedZipLevel
+ password:(nullable NSString *)password
+ error:(NSError **)error
+ delegate:(nullable id)delegate
+ progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler
+ completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler
+{
+ // Guard against empty strings
+ if (path.length == 0 || destination.length == 0)
+ {
+ NSDictionary *userInfo = @{NSLocalizedDescriptionKey: @"received invalid argument(s)"};
+ NSError *err = [NSError errorWithDomain:SSZipArchiveErrorDomain code:SSZipArchiveErrorCodeInvalidArguments userInfo:userInfo];
+ if (error)
+ {
+ *error = err;
+ }
+ if (completionHandler)
+ {
+ completionHandler(nil, NO, err);
+ }
+ return NO;
+ }
+
+ // Begin opening
+ zipFile zip = unzOpen(path.fileSystemRepresentation);
+ if (zip == NULL)
+ {
+ NSDictionary *userInfo = @{NSLocalizedDescriptionKey: @"failed to open zip file"};
+ NSError *err = [NSError errorWithDomain:SSZipArchiveErrorDomain code:SSZipArchiveErrorCodeFailedOpenZipFile userInfo:userInfo];
+ if (error)
+ {
+ *error = err;
+ }
+ if (completionHandler)
+ {
+ completionHandler(nil, NO, err);
+ }
+ return NO;
+ }
+
+ NSDictionary * fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil];
+ unsigned long long fileSize = [[fileAttributes objectForKey:NSFileSize] unsignedLongLongValue];
+ unsigned long long currentPosition = 0;
+
+ unz_global_info globalInfo = {};
+ unzGetGlobalInfo(zip, &globalInfo);
+
+ // Begin unzipping
+ int ret = 0;
+ ret = unzGoToFirstFile(zip);
+ if (ret != UNZ_OK && ret != MZ_END_OF_LIST)
+ {
+ NSDictionary *userInfo = @{NSLocalizedDescriptionKey: @"failed to open first file in zip file"};
+ NSError *err = [NSError errorWithDomain:SSZipArchiveErrorDomain code:SSZipArchiveErrorCodeFailedOpenFileInZip userInfo:userInfo];
+ if (error)
+ {
+ *error = err;
+ }
+ if (completionHandler)
+ {
+ completionHandler(nil, NO, err);
+ }
+ unzClose(zip);
+ return NO;
+ }
+
+ BOOL success = YES;
+ BOOL canceled = NO;
+ int crc_ret = 0;
+ unsigned char buffer[4096] = {0};
+ NSFileManager *fileManager = [NSFileManager defaultManager];
+ NSMutableArray *directoriesModificationDates = [[NSMutableArray alloc] init];
+
+ // Message delegate
+ if ([delegate respondsToSelector:@selector(zipArchiveWillUnzipArchiveAtPath:zipInfo:)]) {
+ [delegate zipArchiveWillUnzipArchiveAtPath:path zipInfo:globalInfo];
+ }
+ if ([delegate respondsToSelector:@selector(zipArchiveProgressEvent:total:)]) {
+ [delegate zipArchiveProgressEvent:currentPosition total:fileSize];
+ }
+
+ NSInteger currentFileNumber = -1;
+ NSError *unzippingError;
+ do {
+ currentFileNumber++;
+ if (ret == MZ_END_OF_LIST) {
+ break;
+ }
+ @autoreleasepool {
+ if (password.length == 0) {
+ ret = unzOpenCurrentFile(zip);
+ } else {
+ ret = unzOpenCurrentFilePassword(zip, [password cStringUsingEncoding:NSUTF8StringEncoding]);
+ }
+
+ if (ret != UNZ_OK) {
+ unzippingError = [NSError errorWithDomain:@"SSZipArchiveErrorDomain" code:SSZipArchiveErrorCodeFailedOpenFileInZip userInfo:@{NSLocalizedDescriptionKey: @"failed to open file in zip file"}];
+ success = NO;
+ break;
+ }
+
+ // Reading data and write to file
+ unz_file_info fileInfo;
+ memset(&fileInfo, 0, sizeof(unz_file_info));
+
+ ret = unzGetCurrentFileInfo(zip, &fileInfo, NULL, 0, NULL, 0, NULL, 0);
+ if (ret != UNZ_OK) {
+ unzippingError = [NSError errorWithDomain:@"SSZipArchiveErrorDomain" code:SSZipArchiveErrorCodeFileInfoNotLoadable userInfo:@{NSLocalizedDescriptionKey: @"failed to retrieve info for file"}];
+ success = NO;
+ unzCloseCurrentFile(zip);
+ break;
+ }
+
+ currentPosition += fileInfo.compressed_size;
+
+ // Message delegate
+ if ([delegate respondsToSelector:@selector(zipArchiveShouldUnzipFileAtIndex:totalFiles:archivePath:fileInfo:)]) {
+ if (![delegate zipArchiveShouldUnzipFileAtIndex:currentFileNumber
+ totalFiles:(NSInteger)globalInfo.number_entry
+ archivePath:path
+ fileInfo:fileInfo]) {
+ success = NO;
+ canceled = YES;
+ break;
+ }
+ }
+ if ([delegate respondsToSelector:@selector(zipArchiveWillUnzipFileAtIndex:totalFiles:archivePath:fileInfo:)]) {
+ [delegate zipArchiveWillUnzipFileAtIndex:currentFileNumber totalFiles:(NSInteger)globalInfo.number_entry
+ archivePath:path fileInfo:fileInfo];
+ }
+ if ([delegate respondsToSelector:@selector(zipArchiveProgressEvent:total:)]) {
+ [delegate zipArchiveProgressEvent:(NSInteger)currentPosition total:(NSInteger)fileSize];
+ }
+
+ char *filename = (char *)malloc(fileInfo.size_filename + 1);
+ if (filename == NULL)
+ {
+ success = NO;
+ break;
+ }
+
+ unzGetCurrentFileInfo(zip, &fileInfo, filename, fileInfo.size_filename + 1, NULL, 0, NULL, 0);
+ filename[fileInfo.size_filename] = '\0';
+
+ BOOL fileIsSymbolicLink = _fileIsSymbolicLink(&fileInfo);
+
+ NSString * strPath = [SSZipArchive _filenameStringWithCString:filename
+ version_made_by:fileInfo.version
+ general_purpose_flag:fileInfo.flag
+ size:fileInfo.size_filename];
+ if ([strPath hasPrefix:@"__MACOSX/"]) {
+ // ignoring resource forks: https://superuser.com/questions/104500/what-is-macosx-folder
+ unzCloseCurrentFile(zip);
+ ret = unzGoToNextFile(zip);
+ free(filename);
+ continue;
+ }
+
+ // Check if it contains directory
+ BOOL isDirectory = NO;
+ if (filename[fileInfo.size_filename-1] == '/' || filename[fileInfo.size_filename-1] == '\\') {
+ isDirectory = YES;
+ }
+ free(filename);
+
+ // Sanitize paths in the file name.
+ strPath = [strPath _sanitizedPath];
+ if (!strPath.length) {
+ // if filename data is unsalvageable, we default to currentFileNumber
+ strPath = @(currentFileNumber).stringValue;
+ }
+
+ NSString *fullPath = [destination stringByAppendingPathComponent:strPath];
+ NSError *err = nil;
+ NSDictionary *directoryAttr;
+ if (preserveAttributes) {
+ NSDate *modDate = [[self class] _dateWithMSDOSFormat:(UInt32)fileInfo.mz_dos_date];
+ directoryAttr = @{NSFileCreationDate: modDate, NSFileModificationDate: modDate};
+ [directoriesModificationDates addObject: @{@"path": fullPath, @"modDate": modDate}];
+ }
+ if (isDirectory) {
+ [fileManager createDirectoryAtPath:fullPath withIntermediateDirectories:YES attributes:directoryAttr error:&err];
+ } else {
+ [fileManager createDirectoryAtPath:fullPath.stringByDeletingLastPathComponent withIntermediateDirectories:YES attributes:directoryAttr error:&err];
+ }
+ if (err != nil) {
+ if ([err.domain isEqualToString:NSCocoaErrorDomain] &&
+ err.code == 640) {
+ unzippingError = err;
+ unzCloseCurrentFile(zip);
+ success = NO;
+ break;
+ }
+ NSLog(@"[SSZipArchive] Error: %@", err.localizedDescription);
+ }
+
+ if ([fileManager fileExistsAtPath:fullPath] && !isDirectory && !overwrite) {
+ //FIXME: couldBe CRC Check?
+ unzCloseCurrentFile(zip);
+ ret = unzGoToNextFile(zip);
+ continue;
+ }
+
+ if (isDirectory && !fileIsSymbolicLink) {
+ // nothing to read/write for a directory
+ } else if (!fileIsSymbolicLink) {
+ // ensure we are not creating stale file entries
+ int readBytes = unzReadCurrentFile(zip, buffer, 4096);
+ if (readBytes >= 0) {
+ FILE *fp = fopen(fullPath.fileSystemRepresentation, "wb");
+ while (fp) {
+ if (readBytes > 0) {
+ if (0 == fwrite(buffer, readBytes, 1, fp)) {
+ if (ferror(fp)) {
+ NSString *message = [NSString stringWithFormat:@"Failed to write file (check your free space)"];
+ NSLog(@"[SSZipArchive] %@", message);
+ success = NO;
+ unzippingError = [NSError errorWithDomain:@"SSZipArchiveErrorDomain" code:SSZipArchiveErrorCodeFailedToWriteFile userInfo:@{NSLocalizedDescriptionKey: message}];
+ break;
+ }
+ }
+ } else {
+ break;
+ }
+ readBytes = unzReadCurrentFile(zip, buffer, 4096);
+ if (readBytes < 0) {
+ // Let's assume error Z_DATA_ERROR is caused by an invalid password
+ // Let's assume other errors are caused by Content Not Readable
+ success = NO;
+ }
+ }
+
+ if (fp) {
+ fclose(fp);
+
+ if (nestedZipLevel
+ && [fullPath.pathExtension.lowercaseString isEqualToString:@"zip"]
+ && [self unzipFileAtPath:fullPath
+ toDestination:fullPath.stringByDeletingLastPathComponent
+ preserveAttributes:preserveAttributes
+ overwrite:overwrite
+ nestedZipLevel:nestedZipLevel - 1
+ password:password
+ error:nil
+ delegate:nil
+ progressHandler:nil
+ completionHandler:nil]) {
+ [directoriesModificationDates removeLastObject];
+ [[NSFileManager defaultManager] removeItemAtPath:fullPath error:nil];
+ } else if (preserveAttributes) {
+
+ // Set the original datetime property
+ if (fileInfo.mz_dos_date != 0) {
+ NSDate *orgDate = [[self class] _dateWithMSDOSFormat:(UInt32)fileInfo.mz_dos_date];
+ NSDictionary *attr = @{NSFileModificationDate: orgDate};
+
+ if (attr) {
+ if (![fileManager setAttributes:attr ofItemAtPath:fullPath error:nil]) {
+ // Can't set attributes
+ NSLog(@"[SSZipArchive] Failed to set attributes - whilst setting modification date");
+ }
+ }
+ }
+
+ // Set the original permissions on the file (+read/write to solve #293)
+ uLong permissions = fileInfo.external_fa >> 16 | 0b110000000;
+ if (permissions != 0) {
+ // Store it into a NSNumber
+ NSNumber *permissionsValue = @(permissions);
+
+ // Retrieve any existing attributes
+ NSMutableDictionary *attrs = [[NSMutableDictionary alloc] initWithDictionary:[fileManager attributesOfItemAtPath:fullPath error:nil]];
+
+ // Set the value in the attributes dict
+ [attrs setObject:permissionsValue forKey:NSFilePosixPermissions];
+
+ // Update attributes
+ if (![fileManager setAttributes:attrs ofItemAtPath:fullPath error:nil]) {
+ // Unable to set the permissions attribute
+ NSLog(@"[SSZipArchive] Failed to set attributes - whilst setting permissions");
+ }
+ }
+ }
+ }
+ else
+ {
+ // if we couldn't open file descriptor we can validate global errno to see the reason
+ int errnoSave = errno;
+ BOOL isSeriousError = NO;
+ switch (errnoSave) {
+ case EISDIR:
+ // Is a directory
+ // assumed case
+ break;
+
+ case ENOSPC:
+ case EMFILE:
+ // No space left on device
+ // or
+ // Too many open files
+ isSeriousError = YES;
+ break;
+
+ default:
+ // ignore case
+ // Just log the error
+ {
+ NSError *errorObject = [NSError errorWithDomain:NSPOSIXErrorDomain
+ code:errnoSave
+ userInfo:nil];
+ NSLog(@"[SSZipArchive] Failed to open file on unzipping.(%@)", errorObject);
+ }
+ break;
+ }
+
+ if (isSeriousError) {
+ // serious case
+ unzippingError = [NSError errorWithDomain:NSPOSIXErrorDomain
+ code:errnoSave
+ userInfo:nil];
+ unzCloseCurrentFile(zip);
+ // Log the error
+ NSLog(@"[SSZipArchive] Failed to open file on unzipping.(%@)", unzippingError);
+
+ // Break unzipping
+ success = NO;
+ break;
+ }
+ }
+ } else {
+ // Let's assume error Z_DATA_ERROR is caused by an invalid password
+ // Let's assume other errors are caused by Content Not Readable
+ success = NO;
+ break;
+ }
+ }
+ else
+ {
+ // Assemble the path for the symbolic link
+ NSMutableString *destinationPath = [NSMutableString string];
+ int bytesRead = 0;
+ while ((bytesRead = unzReadCurrentFile(zip, buffer, 4096)) > 0)
+ {
+ buffer[bytesRead] = 0;
+ [destinationPath appendString:@((const char *)buffer)];
+ }
+ if (bytesRead < 0) {
+ // Let's assume error Z_DATA_ERROR is caused by an invalid password
+ // Let's assume other errors are caused by Content Not Readable
+ success = NO;
+ break;
+ }
+
+ // Check if the symlink exists and delete it if we're overwriting
+ if (overwrite)
+ {
+ if ([fileManager fileExistsAtPath:fullPath])
+ {
+ NSError *localError = nil;
+ BOOL removeSuccess = [fileManager removeItemAtPath:fullPath error:&localError];
+ if (!removeSuccess)
+ {
+ NSString *message = [NSString stringWithFormat:@"Failed to delete existing symbolic link at \"%@\"", localError.localizedDescription];
+ NSLog(@"[SSZipArchive] %@", message);
+ success = NO;
+ unzippingError = [NSError errorWithDomain:SSZipArchiveErrorDomain code:localError.code userInfo:@{NSLocalizedDescriptionKey: message}];
+ }
+ }
+ }
+
+ // Create the symbolic link (making sure it stays relative if it was relative before)
+ int symlinkError = symlink([destinationPath cStringUsingEncoding:NSUTF8StringEncoding],
+ [fullPath cStringUsingEncoding:NSUTF8StringEncoding]);
+
+ if (symlinkError != 0)
+ {
+ // Bubble the error up to the completion handler
+ NSString *message = [NSString stringWithFormat:@"Failed to create symbolic link at \"%@\" to \"%@\" - symlink() error code: %d", fullPath, destinationPath, errno];
+ NSLog(@"[SSZipArchive] %@", message);
+ success = NO;
+ unzippingError = [NSError errorWithDomain:NSPOSIXErrorDomain code:symlinkError userInfo:@{NSLocalizedDescriptionKey: message}];
+ }
+ }
+
+ crc_ret = unzCloseCurrentFile(zip);
+ if (crc_ret == MZ_CRC_ERROR) {
+ // CRC ERROR
+ success = NO;
+ break;
+ }
+ ret = unzGoToNextFile(zip);
+
+ // Message delegate
+ if ([delegate respondsToSelector:@selector(zipArchiveDidUnzipFileAtIndex:totalFiles:archivePath:fileInfo:)]) {
+ [delegate zipArchiveDidUnzipFileAtIndex:currentFileNumber totalFiles:(NSInteger)globalInfo.number_entry
+ archivePath:path fileInfo:fileInfo];
+ } else if ([delegate respondsToSelector: @selector(zipArchiveDidUnzipFileAtIndex:totalFiles:archivePath:unzippedFilePath:)]) {
+ [delegate zipArchiveDidUnzipFileAtIndex: currentFileNumber totalFiles: (NSInteger)globalInfo.number_entry
+ archivePath:path unzippedFilePath: fullPath];
+ }
+
+ if (progressHandler)
+ {
+ progressHandler(strPath, fileInfo, currentFileNumber, globalInfo.number_entry);
+ }
+ }
+ } while (ret == UNZ_OK && success);
+
+ // Close
+ unzClose(zip);
+
+ // The process of decompressing the .zip archive causes the modification times on the folders
+ // to be set to the present time. So, when we are done, they need to be explicitly set.
+ // set the modification date on all of the directories.
+ if (success && preserveAttributes) {
+ NSError * err = nil;
+ for (NSDictionary * d in directoriesModificationDates) {
+ if (![[NSFileManager defaultManager] setAttributes:@{NSFileModificationDate: [d objectForKey:@"modDate"]} ofItemAtPath:[d objectForKey:@"path"] error:&err]) {
+ NSLog(@"[SSZipArchive] Set attributes failed for directory: %@.", [d objectForKey:@"path"]);
+ }
+ if (err) {
+ NSLog(@"[SSZipArchive] Error setting directory file modification date attribute: %@", err.localizedDescription);
+ }
+ }
+ }
+
+ // Message delegate
+ if (success && [delegate respondsToSelector:@selector(zipArchiveDidUnzipArchiveAtPath:zipInfo:unzippedPath:)]) {
+ [delegate zipArchiveDidUnzipArchiveAtPath:path zipInfo:globalInfo unzippedPath:destination];
+ }
+ // final progress event = 100%
+ if (!canceled && [delegate respondsToSelector:@selector(zipArchiveProgressEvent:total:)]) {
+ [delegate zipArchiveProgressEvent:fileSize total:fileSize];
+ }
+
+ NSError *retErr = nil;
+ if (crc_ret == MZ_CRC_ERROR)
+ {
+ NSDictionary *userInfo = @{NSLocalizedDescriptionKey: @"crc check failed for file"};
+ retErr = [NSError errorWithDomain:SSZipArchiveErrorDomain code:SSZipArchiveErrorCodeFileInfoNotLoadable userInfo:userInfo];
+ }
+
+ if (error) {
+ if (unzippingError) {
+ *error = unzippingError;
+ }
+ else {
+ *error = retErr;
+ }
+ }
+ if (completionHandler)
+ {
+ if (unzippingError) {
+ completionHandler(path, success, unzippingError);
+ }
+ else
+ {
+ completionHandler(path, success, retErr);
+ }
+ }
+ return success;
+}
+
+#pragma mark - Zipping
++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths
+{
+ return [SSZipArchive createZipFileAtPath:path withFilesAtPaths:paths withPassword:nil];
+}
++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath {
+ return [SSZipArchive createZipFileAtPath:path withContentsOfDirectory:directoryPath withPassword:nil];
+}
+
++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath keepParentDirectory:(BOOL)keepParentDirectory {
+ return [SSZipArchive createZipFileAtPath:path withContentsOfDirectory:directoryPath keepParentDirectory:keepParentDirectory withPassword:nil];
+}
+
++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths withPassword:(NSString *)password {
+ return [self createZipFileAtPath:path withFilesAtPaths:paths withPassword:password progressHandler:nil];
+}
+
++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths withPassword:(NSString *)password progressHandler:(void(^ _Nullable)(NSUInteger entryNumber, NSUInteger total))progressHandler
+{
+ SSZipArchive *zipArchive = [[SSZipArchive alloc] initWithPath:path];
+ BOOL success = [zipArchive open];
+ if (success) {
+ NSUInteger total = paths.count, complete = 0;
+ for (NSString *filePath in paths) {
+ success &= [zipArchive writeFile:filePath withPassword:password];
+ if (progressHandler) {
+ complete++;
+ progressHandler(complete, total);
+ }
+ }
+ success &= [zipArchive close];
+ }
+ return success;
+}
+
++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath withPassword:(nullable NSString *)password {
+ return [SSZipArchive createZipFileAtPath:path withContentsOfDirectory:directoryPath keepParentDirectory:NO withPassword:password];
+}
+
+
++ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath keepParentDirectory:(BOOL)keepParentDirectory withPassword:(nullable NSString *)password {
+ return [SSZipArchive createZipFileAtPath:path
+ withContentsOfDirectory:directoryPath
+ keepParentDirectory:keepParentDirectory
+ withPassword:password
+ andProgressHandler:nil
+ ];
+}
+
++ (BOOL)createZipFileAtPath:(NSString *)path
+ withContentsOfDirectory:(NSString *)directoryPath
+ keepParentDirectory:(BOOL)keepParentDirectory
+ withPassword:(nullable NSString *)password
+ andProgressHandler:(void(^ _Nullable)(NSUInteger entryNumber, NSUInteger total))progressHandler {
+ return [self createZipFileAtPath:path withContentsOfDirectory:directoryPath keepParentDirectory:keepParentDirectory compressionLevel:Z_DEFAULT_COMPRESSION password:password AES:YES progressHandler:progressHandler];
+}
+
++ (BOOL)createZipFileAtPath:(NSString *)path
+ withContentsOfDirectory:(NSString *)directoryPath
+ keepParentDirectory:(BOOL)keepParentDirectory
+ compressionLevel:(int)compressionLevel
+ password:(nullable NSString *)password
+ AES:(BOOL)aes
+ progressHandler:(void(^ _Nullable)(NSUInteger entryNumber, NSUInteger total))progressHandler {
+
+ SSZipArchive *zipArchive = [[SSZipArchive alloc] initWithPath:path];
+ BOOL success = [zipArchive open];
+ if (success) {
+ // use a local fileManager (queue/thread compatibility)
+ NSFileManager *fileManager = [[NSFileManager alloc] init];
+ NSDirectoryEnumerator *dirEnumerator = [fileManager enumeratorAtPath:directoryPath];
+ NSArray *allObjects = dirEnumerator.allObjects;
+ NSUInteger total = allObjects.count, complete = 0;
+ if (keepParentDirectory && !total) {
+ allObjects = @[@""];
+ total = 1;
+ }
+ for (__strong NSString *fileName in allObjects) {
+ NSString *fullFilePath = [directoryPath stringByAppendingPathComponent:fileName];
+ if ([fullFilePath isEqualToString:path]) {
+ NSLog(@"[SSZipArchive] the archive path and the file path: %@ are the same, which is forbidden.", fullFilePath);
+ continue;
+ }
+
+ if (keepParentDirectory) {
+ fileName = [directoryPath.lastPathComponent stringByAppendingPathComponent:fileName];
+ }
+
+ BOOL isDir;
+ [fileManager fileExistsAtPath:fullFilePath isDirectory:&isDir];
+ if (!isDir) {
+ // file
+ success &= [zipArchive writeFileAtPath:fullFilePath withFileName:fileName compressionLevel:compressionLevel password:password AES:aes];
+ } else {
+ // directory
+ if (![fileManager enumeratorAtPath:fullFilePath].nextObject) {
+ // empty directory
+ success &= [zipArchive writeFolderAtPath:fullFilePath withFolderName:fileName withPassword:password];
+ }
+ }
+ if (progressHandler) {
+ complete++;
+ progressHandler(complete, total);
+ }
+ }
+ success &= [zipArchive close];
+ }
+ return success;
+}
+
++ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths withPassword:(nullable NSString *)password keepSymlinks:(BOOL)keeplinks {
+ if (!keeplinks) {
+ return [SSZipArchive createZipFileAtPath:path withFilesAtPaths:paths withPassword:password];
+ } else {
+ SSZipArchive *zipArchive = [[SSZipArchive alloc] initWithPath:path];
+ BOOL success = [zipArchive open];
+ if (success) {
+ for (NSString *filePath in paths) {
+ //is symlink
+ if (mz_os_is_symlink(filePath.fileSystemRepresentation) == MZ_OK) {
+ success &= [zipArchive writeSymlinkFileAtPath:filePath withFileName:nil compressionLevel:Z_DEFAULT_COMPRESSION password:password AES:YES];
+ } else {
+ success &= [zipArchive writeFile:filePath withPassword:password];
+ }
+ }
+ success &= [zipArchive close];
+ }
+ return success;
+ }
+}
+
++ (BOOL)createZipFileAtPath:(NSString *)path
+ withContentsOfDirectory:(NSString *)directoryPath
+ keepParentDirectory:(BOOL)keepParentDirectory
+ compressionLevel:(int)compressionLevel
+ password:(nullable NSString *)password
+ AES:(BOOL)aes
+ progressHandler:(void(^ _Nullable)(NSUInteger entryNumber, NSUInteger total))progressHandler
+ keepSymlinks:(BOOL)keeplinks {
+ if (!keeplinks) {
+ return [SSZipArchive createZipFileAtPath:path
+ withContentsOfDirectory:directoryPath
+ keepParentDirectory:keepParentDirectory
+ compressionLevel:compressionLevel
+ password:password
+ AES:aes
+ progressHandler:progressHandler];
+ } else {
+ SSZipArchive *zipArchive = [[SSZipArchive alloc] initWithPath:path];
+ BOOL success = [zipArchive open];
+ if (success) {
+ // use a local fileManager (queue/thread compatibility)
+ NSFileManager *fileManager = [[NSFileManager alloc] init];
+ NSDirectoryEnumerator *dirEnumerator = [fileManager enumeratorAtPath:directoryPath];
+ NSArray *allObjects = dirEnumerator.allObjects;
+ NSUInteger total = allObjects.count, complete = 0;
+ if (keepParentDirectory && !total) {
+ allObjects = @[@""];
+ total = 1;
+ }
+ for (__strong NSString *fileName in allObjects) {
+ NSString *fullFilePath = [directoryPath stringByAppendingPathComponent:fileName];
+
+ if (keepParentDirectory) {
+ fileName = [directoryPath.lastPathComponent stringByAppendingPathComponent:fileName];
+ }
+ //is symlink
+ BOOL isSymlink = NO;
+ if (mz_os_is_symlink(fullFilePath.fileSystemRepresentation) == MZ_OK)
+ isSymlink = YES;
+ BOOL isDir;
+ [fileManager fileExistsAtPath:fullFilePath isDirectory:&isDir];
+ if (!isDir || isSymlink) {
+ // file or symlink
+ if (!isSymlink) {
+ success &= [zipArchive writeFileAtPath:fullFilePath withFileName:fileName compressionLevel:compressionLevel password:password AES:aes];
+ } else {
+ success &= [zipArchive writeSymlinkFileAtPath:fullFilePath withFileName:fileName compressionLevel:compressionLevel password:password AES:aes];
+ }
+ } else {
+ // directory
+ if (![fileManager enumeratorAtPath:fullFilePath].nextObject) {
+ // empty directory
+ success &= [zipArchive writeFolderAtPath:fullFilePath withFolderName:fileName withPassword:password];
+ }
+ }
+ if (progressHandler) {
+ complete++;
+ progressHandler(complete, total);
+ }
+ }
+ success &= [zipArchive close];
+ }
+ return success;
+ }
+}
+
+- (BOOL)writeSymlinkFileAtPath:(NSString *)path withFileName:(nullable NSString *)fileName compressionLevel:(int)compressionLevel password:(nullable NSString *)password AES:(BOOL)aes
+{
+ NSAssert((_zip != NULL), @"Attempting to write to an archive which was never opened");
+ //read symlink
+ char link_path[1024];
+ int32_t err = MZ_OK;
+ err = mz_os_read_symlink(path.fileSystemRepresentation, link_path, sizeof(link_path));
+ if (err != MZ_OK) {
+ NSLog(@"[SSZipArchive] Failed to read sylink");
+ return NO;
+ }
+
+ if (!fileName) {
+ fileName = path.lastPathComponent;
+ }
+
+ zip_fileinfo zipInfo = {};
+ [SSZipArchive zipInfo:&zipInfo setAttributesOfItemAtPath:path];
+
+ //unpdate zipInfo.external_fa
+ uint32_t target_attrib = 0;
+ uint32_t src_attrib = 0;
+ uint32_t src_sys = 0;
+ mz_os_get_file_attribs(path.fileSystemRepresentation, &src_attrib);
+ src_sys = MZ_HOST_SYSTEM(MZ_VERSION_MADEBY);
+
+ if ((src_sys != MZ_HOST_SYSTEM_MSDOS) && (src_sys != MZ_HOST_SYSTEM_WINDOWS_NTFS)) {
+ /* High bytes are OS specific attributes, low byte is always DOS attributes */
+ if (mz_zip_attrib_convert(src_sys, src_attrib, MZ_HOST_SYSTEM_MSDOS, &target_attrib) == MZ_OK)
+ zipInfo.external_fa = target_attrib;
+ zipInfo.external_fa |= (src_attrib << 16);
+ } else {
+ zipInfo.external_fa = src_attrib;
+ }
+
+ uint16_t version_madeby = 3 << 8;//UNIX
+ int error = zipOpenNewFileInZip5(_zip, fileName.fileSystemRepresentation, &zipInfo, NULL, 0, NULL, 0, NULL, Z_DEFLATED, compressionLevel, 0, -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, password.UTF8String, aes, version_madeby, 0, 0);
+ zipWriteInFileInZip(_zip, link_path, (uint32_t)strlen(link_path));
+ zipCloseFileInZip(_zip);
+ return error == ZIP_OK;
+}
+
+// disabling `init` because designated initializer is `initWithPath:`
+- (instancetype)init { @throw nil; }
+
+// designated initializer
+- (instancetype)initWithPath:(NSString *)path
+{
+ if ((self = [super init])) {
+ _path = [path copy];
+ }
+ return self;
+}
+
+
+- (BOOL)open
+{
+ NSAssert((_zip == NULL), @"Attempting to open an archive which is already open");
+ _zip = zipOpen(_path.fileSystemRepresentation, APPEND_STATUS_CREATE);
+ return (NULL != _zip);
+}
+
+- (BOOL)openForAppending
+{
+ NSAssert((_zip == NULL), @"Attempting to open an archive which is already open");
+ _zip = zipOpen(_path.fileSystemRepresentation, APPEND_STATUS_ADDINZIP);
+ return (NULL != _zip);
+}
+
+- (BOOL)writeFolderAtPath:(NSString *)path withFolderName:(NSString *)folderName withPassword:(nullable NSString *)password
+{
+ NSAssert((_zip != NULL), @"Attempting to write to an archive which was never opened");
+
+ zip_fileinfo zipInfo = {};
+
+ [SSZipArchive zipInfo:&zipInfo setAttributesOfItemAtPath:path];
+
+ int error = _zipOpenEntry(_zip, [folderName stringByAppendingString:@"/"], &zipInfo, Z_NO_COMPRESSION, password, NO);
+ const void *buffer = NULL;
+ zipWriteInFileInZip(_zip, buffer, 0);
+ zipCloseFileInZip(_zip);
+ return error == ZIP_OK;
+}
+
+- (BOOL)writeFile:(NSString *)path withPassword:(nullable NSString *)password
+{
+ return [self writeFileAtPath:path withFileName:nil withPassword:password];
+}
+
+- (BOOL)writeFileAtPath:(NSString *)path withFileName:(nullable NSString *)fileName withPassword:(nullable NSString *)password
+{
+ return [self writeFileAtPath:path withFileName:fileName compressionLevel:Z_DEFAULT_COMPRESSION password:password AES:YES];
+}
+
+// supports writing files with logical folder/directory structure
+// *path* is the absolute path of the file that will be compressed
+// *fileName* is the relative name of the file how it is stored within the zip e.g. /folder/subfolder/text1.txt
+- (BOOL)writeFileAtPath:(NSString *)path withFileName:(nullable NSString *)fileName compressionLevel:(int)compressionLevel password:(nullable NSString *)password AES:(BOOL)aes
+{
+ NSAssert((_zip != NULL), @"Attempting to write to an archive which was never opened");
+
+ FILE *input = fopen(path.fileSystemRepresentation, "r");
+ if (NULL == input) {
+ return NO;
+ }
+
+ if (!fileName) {
+ fileName = path.lastPathComponent;
+ }
+
+ zip_fileinfo zipInfo = {};
+
+ [SSZipArchive zipInfo:&zipInfo setAttributesOfItemAtPath:path];
+
+ void *buffer = malloc(CHUNK);
+ if (buffer == NULL)
+ {
+ fclose(input);
+ return NO;
+ }
+
+ int error = _zipOpenEntry(_zip, fileName, &zipInfo, compressionLevel, password, aes);
+
+ while (!feof(input) && !ferror(input))
+ {
+ unsigned int len = (unsigned int) fread(buffer, 1, CHUNK, input);
+ zipWriteInFileInZip(_zip, buffer, len);
+ }
+
+ zipCloseFileInZip(_zip);
+ free(buffer);
+ fclose(input);
+ return error == ZIP_OK;
+}
+
+- (BOOL)writeData:(NSData *)data filename:(nullable NSString *)filename withPassword:(nullable NSString *)password
+{
+ return [self writeData:data filename:filename compressionLevel:Z_DEFAULT_COMPRESSION password:password AES:YES];
+}
+
+- (BOOL)writeData:(NSData *)data filename:(nullable NSString *)filename compressionLevel:(int)compressionLevel password:(nullable NSString *)password AES:(BOOL)aes
+{
+ if (!_zip) {
+ return NO;
+ }
+ if (!data) {
+ return NO;
+ }
+ zip_fileinfo zipInfo = {};
+ [SSZipArchive zipInfo:&zipInfo setDate:[NSDate date]];
+
+ int error = _zipOpenEntry(_zip, filename, &zipInfo, compressionLevel, password, aes);
+
+ zipWriteInFileInZip(_zip, data.bytes, (unsigned int)data.length);
+
+ zipCloseFileInZip(_zip);
+ return error == ZIP_OK;
+}
+
+- (BOOL)close
+{
+ NSAssert((_zip != NULL), @"[SSZipArchive] Attempting to close an archive which was never opened");
+ int error = zipClose(_zip, NULL);
+ _zip = nil;
+ return error == ZIP_OK;
+}
+
+#pragma mark - Private
+
++ (NSString *)_filenameStringWithCString:(const char *)filename
+ version_made_by:(uint16_t)version_made_by
+ general_purpose_flag:(uint16_t)flag
+ size:(uint16_t)size_filename {
+
+ // Respect Language encoding flag only reading filename as UTF-8 when this is set
+ // when file entry created on dos system.
+ //
+ // https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
+ // Bit 11: Language encoding flag (EFS). If this bit is set,
+ // the filename and comment fields for this file
+ // MUST be encoded using UTF-8. (see APPENDIX D)
+ uint16_t made_by = version_made_by >> 8;
+ BOOL made_on_dos = made_by == 0;
+ BOOL languageEncoding = (flag & (1 << 11)) != 0;
+ if (!languageEncoding && made_on_dos) {
+ // APPNOTE.TXT D.1:
+ // D.2 If general purpose bit 11 is unset, the file name and comment should conform
+ // to the original ZIP character encoding. If general purpose bit 11 is set, the
+ // filename and comment must support The Unicode Standard, Version 4.1.0 or
+ // greater using the character encoding form defined by the UTF-8 storage
+ // specification. The Unicode Standard is published by the The Unicode
+ // Consortium (www.unicode.org). UTF-8 encoded data stored within ZIP files
+ // is expected to not include a byte order mark (BOM).
+
+ // Code Page 437 corresponds to kCFStringEncodingDOSLatinUS
+ NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSLatinUS);
+ NSString* strPath = [NSString stringWithCString:filename encoding:encoding];
+ if (strPath) {
+ return strPath;
+ }
+ }
+
+ // attempting unicode encoding
+ NSString * strPath = @(filename);
+ if (strPath) {
+ return strPath;
+ }
+
+ // if filename is non-unicode, detect and transform Encoding
+ NSData *data = [NSData dataWithBytes:(const void *)filename length:sizeof(unsigned char) * size_filename];
+// Testing availability of @available (https://stackoverflow.com/a/46927445/1033581)
+#if __clang_major__ < 9
+ // Xcode 8-
+ if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber10_9_2) {
+#else
+ // Xcode 9+
+ if (@available(macOS 10.10, iOS 8.0, watchOS 2.0, tvOS 9.0, *)) {
+#endif
+ // supported encodings are in [NSString availableStringEncodings]
+ [NSString stringEncodingForData:data encodingOptions:nil convertedString:&strPath usedLossyConversion:nil];
+ } else {
+ // fallback to a simple manual detect for macOS 10.9 or older
+ NSArray *encodings = @[@(kCFStringEncodingGB_18030_2000), @(kCFStringEncodingShiftJIS)];
+ for (NSNumber *encoding in encodings) {
+ strPath = [NSString stringWithCString:filename encoding:(NSStringEncoding)CFStringConvertEncodingToNSStringEncoding(encoding.unsignedIntValue)];
+ if (strPath) {
+ break;
+ }
+ }
+ }
+ if (strPath) {
+ return strPath;
+ }
+
+ // if filename encoding is non-detected, we default to something based on data
+ // _hexString is more readable than _base64RFC4648 for debugging unknown encodings
+ strPath = [data _hexString];
+ return strPath;
+}
+
++ (void)zipInfo:(zip_fileinfo *)zipInfo setAttributesOfItemAtPath:(NSString *)path
+{
+ NSDictionary *attr = [[NSFileManager defaultManager] attributesOfItemAtPath:path error: nil];
+ if (attr)
+ {
+ NSDate *fileDate = (NSDate *)[attr objectForKey:NSFileModificationDate];
+ if (fileDate)
+ {
+ [self zipInfo:zipInfo setDate:fileDate];
+ }
+
+ // Write permissions into the external attributes, for details on this see here: https://unix.stackexchange.com/a/14727
+ // Get the permissions value from the files attributes
+ NSNumber *permissionsValue = (NSNumber *)[attr objectForKey:NSFilePosixPermissions];
+ if (permissionsValue != nil) {
+ // Get the short value for the permissions
+ short permissionsShort = permissionsValue.shortValue;
+
+ // Convert this into an octal by adding 010000, 010000 being the flag for a regular file
+ NSInteger permissionsOctal = 0100000 + permissionsShort;
+
+ // Convert this into a long value
+ uLong permissionsLong = @(permissionsOctal).unsignedLongValue;
+
+ // Store this into the external file attributes once it has been shifted 16 places left to form part of the second from last byte
+
+ // Casted back to an unsigned int to match type of external_fa in minizip
+ zipInfo->external_fa = (unsigned int)(permissionsLong << 16L);
+ }
+ }
+}
+
++ (void)zipInfo:(zip_fileinfo *)zipInfo setDate:(NSDate *)date
+{
+ NSCalendar *currentCalendar = SSZipArchive._gregorian;
+ NSCalendarUnit flags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
+ NSDateComponents *components = [currentCalendar components:flags fromDate:date];
+ struct tm tmz_date;
+ tmz_date.tm_sec = (unsigned int)components.second;
+ tmz_date.tm_min = (unsigned int)components.minute;
+ tmz_date.tm_hour = (unsigned int)components.hour;
+ tmz_date.tm_mday = (unsigned int)components.day;
+ // ISO/IEC 9899 struct tm is 0-indexed for January but NSDateComponents for gregorianCalendar is 1-indexed for January
+ tmz_date.tm_mon = (unsigned int)components.month - 1;
+ // ISO/IEC 9899 struct tm is 0-indexed for AD 1900 but NSDateComponents for gregorianCalendar is 1-indexed for AD 1
+ tmz_date.tm_year = (unsigned int)components.year - 1900;
+ zipInfo->mz_dos_date = mz_zip_tm_to_dosdate(&tmz_date);
+}
+
++ (NSCalendar *)_gregorian
+{
+ static NSCalendar *gregorian;
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
+ });
+
+ return gregorian;
+}
+
+// Format from http://newsgroups.derkeiler.com/Archive/Comp/comp.os.msdos.programmer/2009-04/msg00060.html
+// Two consecutive words, or a longword, YYYYYYYMMMMDDDDD hhhhhmmmmmmsssss
+// YYYYYYY is years from 1980 = 0
+// sssss is (seconds/2).
+//
+// 3658 = 0011 0110 0101 1000 = 0011011 0010 11000 = 27 2 24 = 2007-02-24
+// 7423 = 0111 0100 0010 0011 - 01110 100001 00011 = 14 33 3 = 14:33:06
++ (NSDate *)_dateWithMSDOSFormat:(UInt32)msdosDateTime
+{
+ // the whole `_dateWithMSDOSFormat:` method is equivalent but faster than this one line,
+ // essentially because `mktime` is slow:
+ //NSDate *date = [NSDate dateWithTimeIntervalSince1970:dosdate_to_time_t(msdosDateTime)];
+ static const UInt32 kYearMask = 0xFE000000;
+ static const UInt32 kMonthMask = 0x1E00000;
+ static const UInt32 kDayMask = 0x1F0000;
+ static const UInt32 kHourMask = 0xF800;
+ static const UInt32 kMinuteMask = 0x7E0;
+ static const UInt32 kSecondMask = 0x1F;
+
+ NSAssert(0xFFFFFFFF == (kYearMask | kMonthMask | kDayMask | kHourMask | kMinuteMask | kSecondMask), @"[SSZipArchive] MSDOS date masks don't add up");
+
+ NSDateComponents *components = [[NSDateComponents alloc] init];
+ components.year = 1980 + ((msdosDateTime & kYearMask) >> 25);
+ components.month = (msdosDateTime & kMonthMask) >> 21;
+ components.day = (msdosDateTime & kDayMask) >> 16;
+ components.hour = (msdosDateTime & kHourMask) >> 11;
+ components.minute = (msdosDateTime & kMinuteMask) >> 5;
+ components.second = (msdosDateTime & kSecondMask) * 2;
+
+ NSDate *date = [self._gregorian dateFromComponents:components];
+ return date;
+}
+
+@end
+
+int _zipOpenEntry(zipFile entry, NSString *name, const zip_fileinfo *zipfi, int level, NSString *password, BOOL aes)
+{
+ // https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
+ uint16_t made_on_darwin = 19 << 8;
+ //MZ_ZIP_FLAG_UTF8
+ uint16_t flag_base = 1 << 11;
+ return zipOpenNewFileInZip5(entry, name.fileSystemRepresentation, zipfi, NULL, 0, NULL, 0, NULL, Z_DEFLATED, level, 0, -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, password.UTF8String, aes, made_on_darwin, flag_base, 1);
+}
+
+#pragma mark - Private tools for file info
+
+BOOL _fileIsSymbolicLink(const unz_file_info *fileInfo)
+{
+ //
+ // Determine whether this is a symbolic link:
+ // - File is stored with 'version made by' value of UNIX (3),
+ // as per https://www.pkware.com/documents/casestudies/APPNOTE.TXT
+ // in the upper byte of the version field.
+ // - BSD4.4 st_mode constants are stored in the high 16 bits of the
+ // external file attributes (defacto standard, verified against libarchive)
+ //
+ // The original constants can be found here:
+ // https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.4BSD/usr/include/sys/stat.h
+ //
+ const uLong ZipUNIXVersion = 3;
+ const uLong BSD_SFMT = 0170000;
+ const uLong BSD_IFLNK = 0120000;
+
+ BOOL fileIsSymbolicLink = ((fileInfo->version >> 8) == ZipUNIXVersion) && BSD_IFLNK == (BSD_SFMT & (fileInfo->external_fa >> 16));
+ return fileIsSymbolicLink;
+}
+
+#pragma mark - Private tools for unreadable encodings
+
+@implementation NSData (SSZipArchive)
+
+// `base64EncodedStringWithOptions` uses a base64 alphabet with '+' and '/'.
+// we got those alternatives to make it compatible with filenames: https://en.wikipedia.org/wiki/Base64
+// * modified Base64 encoding for IMAP mailbox names (RFC 3501): uses '+' and ','
+// * modified Base64 for URL and filenames (RFC 4648): uses '-' and '_'
+- (NSString *)_base64RFC4648
+{
+ NSString *strName = [self base64EncodedStringWithOptions:0];
+ strName = [strName stringByReplacingOccurrencesOfString:@"+" withString:@"-"];
+ strName = [strName stringByReplacingOccurrencesOfString:@"/" withString:@"_"];
+ return strName;
+}
+
+// initWithBytesNoCopy from NSProgrammer, Jan 25 '12: https://stackoverflow.com/a/9009321/1033581
+// hexChars from Peter, Aug 19 '14: https://stackoverflow.com/a/25378464/1033581
+// not implemented as too lengthy: a potential mapping improvement from Moose, Nov 3 '15: https://stackoverflow.com/a/33501154/1033581
+- (NSString *)_hexString
+{
+ const char *hexChars = "0123456789ABCDEF";
+ NSUInteger length = self.length;
+ const unsigned char *bytes = self.bytes;
+ char *chars = malloc(length * 2);
+ if (chars == NULL) {
+ // we directly raise an exception instead of using NSAssert to make sure assertion is not disabled as this is irrecoverable
+ [NSException raise:@"NSInternalInconsistencyException" format:@"failed malloc" arguments:nil];
+ return nil;
+ }
+ char *s = chars;
+ NSUInteger i = length;
+ while (i--) {
+ *s++ = hexChars[*bytes >> 4];
+ *s++ = hexChars[*bytes & 0xF];
+ bytes++;
+ }
+ NSString *str = [[NSString alloc] initWithBytesNoCopy:chars
+ length:length * 2
+ encoding:NSASCIIStringEncoding
+ freeWhenDone:YES];
+ return str;
+}
+
+@end
+
+#pragma mark Private tools for security
+
+@implementation NSString (SSZipArchive)
+
+// One implementation alternative would be to use the algorithm found at mz_path_resolve from https://github.com/nmoinvaz/minizip/blob/dev/mz_os.c,
+// but making sure to work with unichar values and not ascii values to avoid breaking Unicode characters containing 2E ('.') or 2F ('/') in their decomposition
+/// Sanitize path traversal characters to prevent directory backtracking. Ignoring these characters mimicks the default behavior of the Unarchiving tool on macOS.
+- (NSString *)_sanitizedPath
+{
+ // Change Windows paths to Unix paths: https://en.wikipedia.org/wiki/Path_(computing)
+ // Possible improvement: only do this if the archive was created on a non-Unix system
+ NSString *strPath = [self stringByReplacingOccurrencesOfString:@"\\" withString:@"/"];
+
+ // Percent-encode file path (where path is defined by https://tools.ietf.org/html/rfc8089)
+ // The key part is to allow characters "." and "/" and disallow "%".
+ // CharacterSet.urlPathAllowed seems to do the job
+#if (__MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 || __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 || __WATCH_OS_VERSION_MIN_REQUIRED >= 20000 || __TV_OS_VERSION_MIN_REQUIRED >= 90000)
+ strPath = [strPath stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLPathAllowedCharacterSet];
+#else
+ // Testing availability of @available (https://stackoverflow.com/a/46927445/1033581)
+#if __clang_major__ < 9
+ // Xcode 8-
+ if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber10_8_4) {
+#else
+ // Xcode 9+
+ if (@available(macOS 10.9, iOS 7.0, watchOS 2.0, tvOS 9.0, *)) {
+#endif
+ strPath = [strPath stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLPathAllowedCharacterSet];
+ } else {
+ strPath = [strPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+ }
+#endif
+
+ // `NSString.stringByAddingPercentEncodingWithAllowedCharacters:` may theorically fail: https://stackoverflow.com/questions/33558933/
+ // But because we auto-detect encoding using `NSString.stringEncodingForData:encodingOptions:convertedString:usedLossyConversion:`,
+ // we likely already prevent UTF-16, UTF-32 and invalid Unicode in the form of unpaired surrogate chars: https://stackoverflow.com/questions/53043876/
+ // To be on the safe side, we will still perform a guard check.
+ if (strPath == nil) {
+ return nil;
+ }
+
+ // Add scheme "file:///" to support sanitation on names with a colon like "file:a/../../../usr/bin"
+ strPath = [@"file:///" stringByAppendingString:strPath];
+
+ // Sanitize path traversal characters to prevent directory backtracking. Ignoring these characters mimicks the default behavior of the Unarchiving tool on macOS.
+ // "../../../../../../../../../../../tmp/test.txt" -> "tmp/test.txt"
+ // "a/b/../c.txt" -> "a/c.txt"
+ strPath = [NSURL URLWithString:strPath].standardizedURL.absoluteString;
+
+ // Remove the "file:///" scheme
+ strPath = [strPath substringFromIndex:8];
+
+ // Remove the percent-encoding
+#if (__MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 || __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 || __WATCH_OS_VERSION_MIN_REQUIRED >= 20000 || __TV_OS_VERSION_MIN_REQUIRED >= 90000)
+ strPath = strPath.stringByRemovingPercentEncoding;
+#else
+ // Testing availability of @available (https://stackoverflow.com/a/46927445/1033581)
+#if __clang_major__ < 9
+ // Xcode 8-
+ if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber10_8_4) {
+#else
+ // Xcode 9+
+ if (@available(macOS 10.9, iOS 7.0, watchOS 2.0, tvOS 9.0, *)) {
+#endif
+ strPath = strPath.stringByRemovingPercentEncoding;
+ } else {
+ strPath = [strPath stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+ }
+#endif
+
+ return strPath;
+}
+
+@end
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/SSZipCommon.h b/example/ios/Pods/SSZipArchive/SSZipArchive/SSZipCommon.h
new file mode 100644
index 0000000..78fa282
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/SSZipCommon.h
@@ -0,0 +1,68 @@
+#ifndef SSZipCommon
+#define SSZipCommon
+
+// typedefs moved from mz_compat.h to here for public access
+
+/* unz_global_info structure contain global data about the ZIPfile
+ These data comes from the end of central dir */
+typedef struct unz_global_info64_s
+{
+ uint64_t number_entry; /* total number of entries in the central dir on this disk */
+ uint32_t number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP */
+ uint16_t size_comment; /* size of the global comment of the zipfile */
+} unz_global_info64;
+
+typedef struct unz_global_info_s
+{
+ uint32_t number_entry; /* total number of entries in the central dir on this disk */
+ uint32_t number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP */
+ uint16_t size_comment; /* size of the global comment of the zipfile */
+} unz_global_info;
+
+/* unz_file_info contain information about a file in the zipfile */
+/* https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT */
+typedef struct unz_file_info64_s
+{
+ uint16_t version; /* version made by 2 bytes */
+ uint16_t version_needed; /* version needed to extract 2 bytes */
+ uint16_t flag; /* general purpose bit flag 2 bytes */
+ uint16_t compression_method; /* compression method 2 bytes */
+ uint32_t dos_date; /* last mod file date in Dos fmt 4 bytes */
+ uint32_t crc; /* crc-32 4 bytes */
+ uint64_t compressed_size; /* compressed size 8 bytes */
+ uint64_t uncompressed_size; /* uncompressed size 8 bytes */
+ uint16_t size_filename; /* filename length 2 bytes */
+ uint16_t size_file_extra; /* extra field length 2 bytes */
+ uint16_t size_file_comment; /* file comment length 2 bytes */
+
+ uint32_t disk_num_start; /* disk number start 4 bytes */
+ uint16_t internal_fa; /* internal file attributes 2 bytes */
+ uint32_t external_fa; /* external file attributes 4 bytes */
+
+ uint64_t disk_offset;
+
+ uint16_t size_file_extra_internal;
+} unz_file_info64;
+
+typedef struct unz_file_info_s
+{
+ uint16_t version; /* version made by 2 bytes */
+ uint16_t version_needed; /* version needed to extract 2 bytes */
+ uint16_t flag; /* general purpose bit flag 2 bytes */
+ uint16_t compression_method; /* compression method 2 bytes */
+ uint32_t dos_date; /* last mod file date in Dos fmt 4 bytes */
+ uint32_t crc; /* crc-32 4 bytes */
+ uint32_t compressed_size; /* compressed size 4 bytes */
+ uint32_t uncompressed_size; /* uncompressed size 4 bytes */
+ uint16_t size_filename; /* filename length 2 bytes */
+ uint16_t size_file_extra; /* extra field length 2 bytes */
+ uint16_t size_file_comment; /* file comment length 2 bytes */
+
+ uint16_t disk_num_start; /* disk number start 2 bytes */
+ uint16_t internal_fa; /* internal file attributes 2 bytes */
+ uint32_t external_fa; /* external file attributes 4 bytes */
+
+ uint64_t disk_offset;
+} unz_file_info;
+
+#endif
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/include/ZipArchive.h b/example/ios/Pods/SSZipArchive/SSZipArchive/include/ZipArchive.h
new file mode 100644
index 0000000..e81fc9b
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/include/ZipArchive.h
@@ -0,0 +1,25 @@
+//
+// ZipArchive.h
+// ZipArchive
+//
+// Created by Serhii Mumriak on 12/1/15.
+//
+
+#import
+
+//! Project version number for ZipArchive.
+FOUNDATION_EXPORT double ZipArchiveVersionNumber;
+
+//! Project version string for ZipArchive.
+FOUNDATION_EXPORT const unsigned char ZipArchiveVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+// This is to account for the many different ways this library gets imported.
+#if __has_include()
+#import
+#elif __has_include("../SSZipArchive.h")
+#import "../SSZipArchive.h"
+#else
+#import "SSZipArchive.h"
+#endif
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz.h b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz.h
new file mode 100644
index 0000000..82a14a2
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz.h
@@ -0,0 +1,274 @@
+/* mz.h -- Errors codes, zip flags and magic
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#ifndef MZ_H
+#define MZ_H
+
+/***************************************************************************/
+
+/* MZ_VERSION */
+#define MZ_VERSION ("3.0.4")
+#define MZ_VERSION_BUILD (030004)
+
+/* MZ_ERROR */
+#define MZ_OK (0) /* zlib */
+#define MZ_STREAM_ERROR (-1) /* zlib */
+#define MZ_DATA_ERROR (-3) /* zlib */
+#define MZ_MEM_ERROR (-4) /* zlib */
+#define MZ_BUF_ERROR (-5) /* zlib */
+#define MZ_VERSION_ERROR (-6) /* zlib */
+
+#define MZ_END_OF_LIST (-100)
+#define MZ_END_OF_STREAM (-101)
+
+#define MZ_PARAM_ERROR (-102)
+#define MZ_FORMAT_ERROR (-103)
+#define MZ_INTERNAL_ERROR (-104)
+#define MZ_CRC_ERROR (-105)
+#define MZ_CRYPT_ERROR (-106)
+#define MZ_EXIST_ERROR (-107)
+#define MZ_PASSWORD_ERROR (-108)
+#define MZ_SUPPORT_ERROR (-109)
+#define MZ_HASH_ERROR (-110)
+#define MZ_OPEN_ERROR (-111)
+#define MZ_CLOSE_ERROR (-112)
+#define MZ_SEEK_ERROR (-113)
+#define MZ_TELL_ERROR (-114)
+#define MZ_READ_ERROR (-115)
+#define MZ_WRITE_ERROR (-116)
+#define MZ_SIGN_ERROR (-117)
+#define MZ_SYMLINK_ERROR (-118)
+
+/* MZ_OPEN */
+#define MZ_OPEN_MODE_READ (0x01)
+#define MZ_OPEN_MODE_WRITE (0x02)
+#define MZ_OPEN_MODE_READWRITE (MZ_OPEN_MODE_READ | MZ_OPEN_MODE_WRITE)
+#define MZ_OPEN_MODE_APPEND (0x04)
+#define MZ_OPEN_MODE_CREATE (0x08)
+#define MZ_OPEN_MODE_EXISTING (0x10)
+
+/* MZ_SEEK */
+#define MZ_SEEK_SET (0)
+#define MZ_SEEK_CUR (1)
+#define MZ_SEEK_END (2)
+
+/* MZ_COMPRESS */
+#define MZ_COMPRESS_METHOD_STORE (0)
+#define MZ_COMPRESS_METHOD_DEFLATE (8)
+#define MZ_COMPRESS_METHOD_BZIP2 (12)
+#define MZ_COMPRESS_METHOD_LZMA (14)
+#define MZ_COMPRESS_METHOD_ZSTD (93)
+#define MZ_COMPRESS_METHOD_XZ (95)
+#define MZ_COMPRESS_METHOD_AES (99)
+
+#define MZ_COMPRESS_LEVEL_DEFAULT (-1)
+#define MZ_COMPRESS_LEVEL_FAST (2)
+#define MZ_COMPRESS_LEVEL_NORMAL (6)
+#define MZ_COMPRESS_LEVEL_BEST (9)
+
+/* MZ_ZIP_FLAG */
+#define MZ_ZIP_FLAG_ENCRYPTED (1 << 0)
+#define MZ_ZIP_FLAG_LZMA_EOS_MARKER (1 << 1)
+#define MZ_ZIP_FLAG_DEFLATE_MAX (1 << 1)
+#define MZ_ZIP_FLAG_DEFLATE_NORMAL (0)
+#define MZ_ZIP_FLAG_DEFLATE_FAST (1 << 2)
+#define MZ_ZIP_FLAG_DEFLATE_SUPER_FAST (MZ_ZIP_FLAG_DEFLATE_FAST | \
+ MZ_ZIP_FLAG_DEFLATE_MAX)
+#define MZ_ZIP_FLAG_DATA_DESCRIPTOR (1 << 3)
+#define MZ_ZIP_FLAG_UTF8 (1 << 11)
+#define MZ_ZIP_FLAG_MASK_LOCAL_INFO (1 << 13)
+
+/* MZ_ZIP_EXTENSION */
+#define MZ_ZIP_EXTENSION_ZIP64 (0x0001)
+#define MZ_ZIP_EXTENSION_NTFS (0x000a)
+#define MZ_ZIP_EXTENSION_AES (0x9901)
+#define MZ_ZIP_EXTENSION_UNIX1 (0x000d)
+#define MZ_ZIP_EXTENSION_SIGN (0x10c5)
+#define MZ_ZIP_EXTENSION_HASH (0x1a51)
+#define MZ_ZIP_EXTENSION_CDCD (0xcdcd)
+
+/* MZ_ZIP64 */
+#define MZ_ZIP64_AUTO (0)
+#define MZ_ZIP64_FORCE (1)
+#define MZ_ZIP64_DISABLE (2)
+
+/* MZ_HOST_SYSTEM */
+#define MZ_HOST_SYSTEM(VERSION_MADEBY) ((uint8_t)(VERSION_MADEBY >> 8))
+#define MZ_HOST_SYSTEM_MSDOS (0)
+#define MZ_HOST_SYSTEM_UNIX (3)
+#define MZ_HOST_SYSTEM_WINDOWS_NTFS (10)
+#define MZ_HOST_SYSTEM_RISCOS (13)
+#define MZ_HOST_SYSTEM_OSX_DARWIN (19)
+
+/* MZ_PKCRYPT */
+#define MZ_PKCRYPT_HEADER_SIZE (12)
+
+/* MZ_AES */
+#define MZ_AES_VERSION (1)
+#define MZ_AES_ENCRYPTION_MODE_128 (0x01)
+#define MZ_AES_ENCRYPTION_MODE_192 (0x02)
+#define MZ_AES_ENCRYPTION_MODE_256 (0x03)
+#define MZ_AES_KEY_LENGTH(MODE) (8 * (MODE & 3) + 8)
+#define MZ_AES_KEY_LENGTH_MAX (32)
+#define MZ_AES_BLOCK_SIZE (16)
+#define MZ_AES_HEADER_SIZE(MODE) ((4 * (MODE & 3) + 4) + 2)
+#define MZ_AES_FOOTER_SIZE (10)
+
+/* MZ_HASH */
+#define MZ_HASH_MD5 (10)
+#define MZ_HASH_MD5_SIZE (16)
+#define MZ_HASH_SHA1 (20)
+#define MZ_HASH_SHA1_SIZE (20)
+#define MZ_HASH_SHA256 (23)
+#define MZ_HASH_SHA256_SIZE (32)
+#define MZ_HASH_MAX_SIZE (256)
+
+/* MZ_ENCODING */
+#define MZ_ENCODING_CODEPAGE_437 (437)
+#define MZ_ENCODING_CODEPAGE_932 (932)
+#define MZ_ENCODING_CODEPAGE_936 (936)
+#define MZ_ENCODING_CODEPAGE_950 (950)
+#define MZ_ENCODING_UTF8 (65001)
+
+/* MZ_UTILITY */
+#define MZ_UNUSED(SYMBOL) ((void)SYMBOL)
+
+#ifndef MZ_CUSTOM_ALLOC
+#define MZ_ALLOC(SIZE) (malloc((SIZE)))
+#endif
+#ifndef MZ_CUSTOM_FREE
+#define MZ_FREE(PTR) (free(PTR))
+#endif
+
+#if defined(_WIN32) && defined(MZ_EXPORTS)
+#define MZ_EXPORT __declspec(dllexport)
+#else
+#define MZ_EXPORT
+#endif
+
+/***************************************************************************/
+
+#include /* size_t, NULL, malloc */
+#include /* time_t, time() */
+#include /* memset, strncpy, strlen */
+#include
+
+#if defined(HAVE_STDINT_H)
+# include
+#elif defined(__has_include)
+# if __has_include()
+# include
+# endif
+#endif
+
+#ifndef INT8_MAX
+typedef signed char int8_t;
+#endif
+#ifndef INT16_MAX
+typedef short int16_t;
+#endif
+#ifndef INT32_MAX
+typedef int int32_t;
+#endif
+#ifndef INT64_MAX
+typedef long long int64_t;
+#endif
+#ifndef UINT8_MAX
+typedef unsigned char uint8_t;
+#endif
+#ifndef UINT16_MAX
+typedef unsigned short uint16_t;
+#endif
+#ifndef UINT32_MAX
+typedef unsigned int uint32_t;
+#endif
+#ifndef UINT64_MAX
+typedef unsigned long long uint64_t;
+#endif
+
+#if defined(HAVE_INTTYPES_H)
+# include
+#elif defined(__has_include)
+# if __has_include()
+# include
+# endif
+#endif
+
+#ifndef PRId8
+# define PRId8 "hhd"
+#endif
+#ifndef PRIu8
+# define PRIu8 "hhu"
+#endif
+#ifndef PRIx8
+# define PRIx8 "hhx"
+#endif
+#ifndef PRId16
+# define PRId16 "hd"
+#endif
+#ifndef PRIu16
+# define PRIu16 "hu"
+#endif
+#ifndef PRIx16
+# define PRIx16 "hx"
+#endif
+#ifndef PRId32
+# define PRId32 "d"
+#endif
+#ifndef PRIu32
+# define PRIu32 "u"
+#endif
+#ifndef PRIx32
+# define PRIx32 "x"
+#endif
+#if ULONG_MAX == 0xfffffffful
+# ifndef PRId64
+# define PRId64 "ld"
+# endif
+# ifndef PRIu64
+# define PRIu64 "lu"
+# endif
+# ifndef PRIx64
+# define PRIx64 "lx"
+# endif
+#else
+# ifndef PRId64
+# define PRId64 "lld"
+# endif
+# ifndef PRIu64
+# define PRIu64 "llu"
+# endif
+# ifndef PRIx64
+# define PRIx64 "llx"
+# endif
+#endif
+
+#ifndef INT16_MAX
+# define INT16_MAX 32767
+#endif
+#ifndef INT32_MAX
+# define INT32_MAX 2147483647L
+#endif
+#ifndef INT64_MAX
+# define INT64_MAX 9223372036854775807LL
+#endif
+#ifndef UINT16_MAX
+# define UINT16_MAX 65535U
+#endif
+#ifndef UINT32_MAX
+# define UINT32_MAX 4294967295UL
+#endif
+#ifndef UINT64_MAX
+# define UINT64_MAX 18446744073709551615ULL
+#endif
+
+/***************************************************************************/
+
+#endif
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_compat.c b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_compat.c
new file mode 100644
index 0000000..759e30b
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_compat.c
@@ -0,0 +1,991 @@
+/* mz_compat.c -- Backwards compatible interface for older versions
+ Version 2.8.9, July 4, 2019
+ part of the MiniZip project
+
+ Copyright (C) 2010-2019 Nathan Moinvaziri
+ https://github.com/nmoinvaz/minizip
+ Copyright (C) 1998-2010 Gilles Vollant
+ https://www.winimage.com/zLibDll/minizip.html
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+
+#include "mz.h"
+#include "mz_os.h"
+#include "mz_strm.h"
+#include "mz_strm_mem.h"
+#include "mz_strm_os.h"
+#include "mz_strm_zlib.h"
+#include "mz_zip.h"
+
+#include /* SEEK */
+
+#include "mz_compat.h"
+
+/***************************************************************************/
+
+typedef struct mz_compat_s {
+ void *stream;
+ void *handle;
+ uint64_t entry_index;
+ int64_t entry_pos;
+ int64_t total_out;
+} mz_compat;
+
+/***************************************************************************/
+
+static int32_t zipConvertAppendToStreamMode(int append)
+{
+ int32_t mode = MZ_OPEN_MODE_WRITE;
+ switch (append)
+ {
+ case APPEND_STATUS_CREATE:
+ mode |= MZ_OPEN_MODE_CREATE;
+ break;
+ case APPEND_STATUS_CREATEAFTER:
+ mode |= MZ_OPEN_MODE_CREATE | MZ_OPEN_MODE_APPEND;
+ break;
+ case APPEND_STATUS_ADDINZIP:
+ mode |= MZ_OPEN_MODE_READ | MZ_OPEN_MODE_APPEND;
+ break;
+ }
+ return mode;
+}
+
+zipFile zipOpen(const char *path, int append)
+{
+ zlib_filefunc64_def pzlib = mz_stream_os_get_interface();
+ return zipOpen2(path, append, NULL, &pzlib);
+}
+
+zipFile zipOpen64(const void *path, int append)
+{
+ zlib_filefunc64_def pzlib = mz_stream_os_get_interface();
+ return zipOpen2(path, append, NULL, &pzlib);
+}
+
+zipFile zipOpen2(const char *path, int append, const char **globalcomment,
+ zlib_filefunc_def *pzlib_filefunc_def)
+{
+ return zipOpen2_64(path, append, globalcomment, pzlib_filefunc_def);
+}
+
+zipFile zipOpen2_64(const void *path, int append, const char **globalcomment,
+ zlib_filefunc64_def *pzlib_filefunc_def)
+{
+ zipFile zip = NULL;
+ int32_t mode = zipConvertAppendToStreamMode(append);
+ void *stream = NULL;
+
+ if (pzlib_filefunc_def)
+ {
+ if (mz_stream_create(&stream, (mz_stream_vtbl *)*pzlib_filefunc_def) == NULL)
+ return NULL;
+ }
+ else
+ {
+ if (mz_stream_os_create(&stream) == NULL)
+ return NULL;
+ }
+
+ if (mz_stream_open(stream, path, mode) != MZ_OK)
+ {
+ mz_stream_delete(&stream);
+ return NULL;
+ }
+
+ zip = zipOpen_MZ(stream, append, globalcomment);
+
+ if (zip == NULL)
+ {
+ mz_stream_delete(&stream);
+ return NULL;
+ }
+
+ return zip;
+}
+
+zipFile zipOpen_MZ(void *stream, int append, const char **globalcomment)
+{
+ mz_compat *compat = NULL;
+ int32_t err = MZ_OK;
+ int32_t mode = zipConvertAppendToStreamMode(append);
+ void *handle = NULL;
+
+ mz_zip_create(&handle);
+ err = mz_zip_open(handle, stream, mode);
+
+ if (err != MZ_OK)
+ {
+ mz_zip_delete(&handle);
+ return NULL;
+ }
+
+ if (globalcomment != NULL)
+ mz_zip_get_comment(handle, globalcomment);
+
+ compat = (mz_compat *)MZ_ALLOC(sizeof(mz_compat));
+ if (compat != NULL)
+ {
+ compat->handle = handle;
+ compat->stream = stream;
+ }
+ else
+ {
+ mz_zip_delete(&handle);
+ }
+
+ return (zipFile)compat;
+}
+
+int zipOpenNewFileInZip5(zipFile file, const char *filename, const zip_fileinfo *zipfi,
+ const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global,
+ uint16_t size_extrafield_global, const char *comment, uint16_t compression_method, int level,
+ int raw, int windowBits, int memLevel, int strategy, const char *password,
+ signed char aes, uint16_t version_madeby, uint16_t flag_base, int zip64)
+{
+ mz_compat *compat = (mz_compat *)file;
+ mz_zip_file file_info;
+ uint64_t dos_date = 0;
+
+ MZ_UNUSED(strategy);
+ MZ_UNUSED(memLevel);
+ MZ_UNUSED(windowBits);
+ MZ_UNUSED(size_extrafield_local);
+ MZ_UNUSED(extrafield_local);
+
+ if (compat == NULL)
+ return ZIP_PARAMERROR;
+
+ memset(&file_info, 0, sizeof(file_info));
+
+ if (zipfi != NULL)
+ {
+ if (zipfi->mz_dos_date != 0)
+ dos_date = zipfi->mz_dos_date;
+ else
+ dos_date = mz_zip_tm_to_dosdate(&zipfi->tmz_date);
+
+ file_info.modified_date = mz_zip_dosdate_to_time_t(dos_date);
+ file_info.external_fa = zipfi->external_fa;
+ file_info.internal_fa = zipfi->internal_fa;
+ }
+
+ if (filename == NULL)
+ filename = "-";
+
+ file_info.compression_method = compression_method;
+ file_info.filename = filename;
+ /* file_info.extrafield_local = extrafield_local; */
+ /* file_info.extrafield_local_size = size_extrafield_local; */
+ file_info.extrafield = extrafield_global;
+ file_info.extrafield_size = size_extrafield_global;
+ file_info.version_madeby = version_madeby;
+ file_info.comment = comment;
+ file_info.flag = flag_base;
+ if (zip64)
+ file_info.zip64 = MZ_ZIP64_FORCE;
+ else
+ file_info.zip64 = MZ_ZIP64_DISABLE;
+#ifdef HAVE_WZAES
+ if ((aes && password != NULL) || (raw && (file_info.flag & MZ_ZIP_FLAG_ENCRYPTED)))
+ file_info.aes_version = MZ_AES_VERSION;
+#endif
+
+ return mz_zip_entry_write_open(compat->handle, &file_info, (int16_t)level, (uint8_t)raw, password);
+}
+
+int zipWriteInFileInZip(zipFile file, const void *buf, uint32_t len)
+{
+ mz_compat *compat = (mz_compat *)file;
+ int32_t written = 0;
+ if (compat == NULL || len >= INT32_MAX)
+ return ZIP_PARAMERROR;
+ written = mz_zip_entry_write(compat->handle, buf, (int32_t)len);
+ if ((written < 0) || ((uint32_t)written != len))
+ return ZIP_ERRNO;
+ return ZIP_OK;
+}
+
+int zipCloseFileInZipRaw(zipFile file, uint32_t uncompressed_size, uint32_t crc32)
+{
+ return zipCloseFileInZipRaw64(file, uncompressed_size, crc32);
+}
+
+int zipCloseFileInZipRaw64(zipFile file, int64_t uncompressed_size, uint32_t crc32)
+{
+ mz_compat *compat = (mz_compat *)file;
+ if (compat == NULL)
+ return ZIP_PARAMERROR;
+ return mz_zip_entry_close_raw(compat->handle, uncompressed_size, crc32);
+}
+
+int zipCloseFileInZip(zipFile file)
+{
+ return zipCloseFileInZip64(file);
+}
+
+int zipCloseFileInZip64(zipFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ if (compat == NULL)
+ return ZIP_PARAMERROR;
+ return mz_zip_entry_close(compat->handle);
+}
+
+int zipClose(zipFile file, const char *global_comment)
+{
+ return zipClose_64(file, global_comment);
+}
+
+int zipClose_64(zipFile file, const char *global_comment)
+{
+ return zipClose2_64(file, global_comment, MZ_VERSION_MADEBY);
+}
+
+int zipClose2_64(zipFile file, const char *global_comment, uint16_t version_madeby)
+{
+ mz_compat *compat = (mz_compat *)file;
+ int32_t err = MZ_OK;
+
+ if (compat->handle != NULL)
+ err = zipClose2_MZ(file, global_comment, version_madeby);
+
+ if (compat->stream != NULL)
+ {
+ mz_stream_close(compat->stream);
+ mz_stream_delete(&compat->stream);
+ }
+
+ MZ_FREE(compat);
+
+ return err;
+}
+
+/* Only closes the zip handle, does not close the stream */
+int zipClose_MZ(zipFile file, const char *global_comment)
+{
+ return zipClose2_MZ(file, global_comment, MZ_VERSION_MADEBY);
+}
+
+/* Only closes the zip handle, does not close the stream */
+int zipClose2_MZ(zipFile file, const char *global_comment, uint16_t version_madeby)
+{
+ mz_compat *compat = (mz_compat *)file;
+ int32_t err = MZ_OK;
+
+ if (compat == NULL)
+ return ZIP_PARAMERROR;
+ if (compat->handle == NULL)
+ return err;
+
+ if (global_comment != NULL)
+ mz_zip_set_comment(compat->handle, global_comment);
+
+ mz_zip_set_version_madeby(compat->handle, version_madeby);
+ err = mz_zip_close(compat->handle);
+ mz_zip_delete(&compat->handle);
+
+ return err;
+}
+
+void* zipGetStream(zipFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ if (compat == NULL)
+ return NULL;
+ return (void *)compat->stream;
+}
+
+/***************************************************************************/
+
+unzFile unzOpen(const char *path)
+{
+ return unzOpen64(path);
+}
+
+unzFile unzOpen64(const void *path)
+{
+ zlib_filefunc64_def pzlib = mz_stream_os_get_interface();
+ return unzOpen2(path, &pzlib);
+}
+
+unzFile unzOpen2(const char *path, zlib_filefunc_def *pzlib_filefunc_def)
+{
+ return unzOpen2_64(path, pzlib_filefunc_def);
+}
+
+unzFile unzOpen2_64(const void *path, zlib_filefunc64_def *pzlib_filefunc_def)
+{
+ unzFile unz = NULL;
+ void *stream = NULL;
+
+ if (pzlib_filefunc_def)
+ {
+ if (mz_stream_create(&stream, (mz_stream_vtbl *)*pzlib_filefunc_def) == NULL)
+ return NULL;
+ }
+ else
+ {
+ if (mz_stream_os_create(&stream) == NULL)
+ return NULL;
+ }
+
+ if (mz_stream_open(stream, path, MZ_OPEN_MODE_READ) != MZ_OK)
+ {
+ mz_stream_delete(&stream);
+ return NULL;
+ }
+
+ unz = unzOpen_MZ(stream);
+ if (unz == NULL)
+ {
+ mz_stream_delete(&stream);
+ return NULL;
+ }
+ return unz;
+}
+
+unzFile unzOpen_MZ(void *stream)
+{
+ mz_compat *compat = NULL;
+ int32_t err = MZ_OK;
+ void *handle = NULL;
+
+ mz_zip_create(&handle);
+ err = mz_zip_open(handle, stream, MZ_OPEN_MODE_READ);
+
+ if (err != MZ_OK)
+ {
+ mz_zip_delete(&handle);
+ return NULL;
+ }
+
+ compat = (mz_compat *)MZ_ALLOC(sizeof(mz_compat));
+ if (compat != NULL)
+ {
+ compat->handle = handle;
+ compat->stream = stream;
+
+ mz_zip_goto_first_entry(compat->handle);
+ }
+ else
+ {
+ mz_zip_delete(&handle);
+ }
+
+ return (unzFile)compat;
+}
+
+int unzClose(unzFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ int32_t err = MZ_OK;
+
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+
+ if (compat->handle != NULL)
+ err = unzClose_MZ(file);
+
+ if (compat->stream != NULL)
+ {
+ mz_stream_close(compat->stream);
+ mz_stream_delete(&compat->stream);
+ }
+
+ MZ_FREE(compat);
+
+ return err;
+}
+
+/* Only closes the zip handle, does not close the stream */
+int unzClose_MZ(unzFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ int32_t err = MZ_OK;
+
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+
+ err = mz_zip_close(compat->handle);
+ mz_zip_delete(&compat->handle);
+
+ return err;
+}
+
+int unzGetGlobalInfo(unzFile file, unz_global_info* pglobal_info32)
+{
+ mz_compat *compat = (mz_compat *)file;
+ unz_global_info64 global_info64;
+ int32_t err = MZ_OK;
+
+ memset(pglobal_info32, 0, sizeof(unz_global_info));
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+
+ err = unzGetGlobalInfo64(file, &global_info64);
+ if (err == MZ_OK)
+ {
+ pglobal_info32->number_entry = (uint32_t)global_info64.number_entry;
+ pglobal_info32->size_comment = global_info64.size_comment;
+ pglobal_info32->number_disk_with_CD = global_info64.number_disk_with_CD;
+ }
+ return err;
+}
+
+int unzGetGlobalInfo64(unzFile file, unz_global_info64 *pglobal_info)
+{
+ mz_compat *compat = (mz_compat *)file;
+ const char *comment_ptr = NULL;
+ int32_t err = MZ_OK;
+
+ memset(pglobal_info, 0, sizeof(unz_global_info64));
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+ err = mz_zip_get_comment(compat->handle, &comment_ptr);
+ if (err == MZ_OK)
+ pglobal_info->size_comment = (uint16_t)strlen(comment_ptr);
+ if ((err == MZ_OK) || (err == MZ_EXIST_ERROR))
+ err = mz_zip_get_number_entry(compat->handle, &pglobal_info->number_entry);
+ if (err == MZ_OK)
+ err = mz_zip_get_disk_number_with_cd(compat->handle, &pglobal_info->number_disk_with_CD);
+ return err;
+}
+
+int unzGetGlobalComment(unzFile file, char *comment, uint16_t comment_size)
+{
+ mz_compat *compat = (mz_compat *)file;
+ const char *comment_ptr = NULL;
+ int32_t err = MZ_OK;
+
+ if (comment == NULL || comment_size == 0)
+ return UNZ_PARAMERROR;
+ err = mz_zip_get_comment(compat->handle, &comment_ptr);
+ if (err == MZ_OK)
+ {
+ strncpy(comment, comment_ptr, comment_size - 1);
+ comment[comment_size - 1] = 0;
+ }
+ return err;
+}
+
+int unzOpenCurrentFile3(unzFile file, int *method, int *level, int raw, const char *password)
+{
+ mz_compat *compat = (mz_compat *)file;
+ mz_zip_file *file_info = NULL;
+ int32_t err = MZ_OK;
+ void *stream = NULL;
+
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+ if (method != NULL)
+ *method = 0;
+ if (level != NULL)
+ *level = 0;
+
+ compat->total_out = 0;
+ err = mz_zip_entry_read_open(compat->handle, (uint8_t)raw, password);
+ if (err == MZ_OK)
+ err = mz_zip_entry_get_info(compat->handle, &file_info);
+ if (err == MZ_OK)
+ {
+ if (method != NULL)
+ {
+ *method = file_info->compression_method;
+ }
+
+ if (level != NULL)
+ {
+ *level = 6;
+ switch (file_info->flag & 0x06)
+ {
+ case MZ_ZIP_FLAG_DEFLATE_SUPER_FAST:
+ *level = 1;
+ break;
+ case MZ_ZIP_FLAG_DEFLATE_FAST:
+ *level = 2;
+ break;
+ case MZ_ZIP_FLAG_DEFLATE_MAX:
+ *level = 9;
+ break;
+ }
+ }
+ }
+ if (err == MZ_OK)
+ err = mz_zip_get_stream(compat->handle, &stream);
+ if (err == MZ_OK)
+ compat->entry_pos = mz_stream_tell(stream);
+ return err;
+}
+
+int unzOpenCurrentFile(unzFile file)
+{
+ return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL);
+}
+
+int unzOpenCurrentFilePassword(unzFile file, const char *password)
+{
+ return unzOpenCurrentFile3(file, NULL, NULL, 0, password);
+}
+
+int unzOpenCurrentFile2(unzFile file, int *method, int *level, int raw)
+{
+ return unzOpenCurrentFile3(file, method, level, raw, NULL);
+}
+
+int unzReadCurrentFile(unzFile file, void *buf, uint32_t len)
+{
+ mz_compat *compat = (mz_compat *)file;
+ int32_t err = MZ_OK;
+ if (compat == NULL || len >= INT32_MAX)
+ return UNZ_PARAMERROR;
+ err = mz_zip_entry_read(compat->handle, buf, (int32_t)len);
+ if (err > 0)
+ compat->total_out += (uint32_t)err;
+ return err;
+}
+
+int unzCloseCurrentFile(unzFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ int32_t err = MZ_OK;
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+ err = mz_zip_entry_close(compat->handle);
+ return err;
+}
+
+int unzGetCurrentFileInfo(unzFile file, unz_file_info *pfile_info, char *filename,
+ uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size)
+{
+ mz_compat *compat = (mz_compat *)file;
+ mz_zip_file *file_info = NULL;
+ uint16_t bytes_to_copy = 0;
+ int32_t err = MZ_OK;
+
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+
+ err = mz_zip_entry_get_info(compat->handle, &file_info);
+
+ if ((err == MZ_OK) && (pfile_info != NULL))
+ {
+ pfile_info->version = file_info->version_madeby;
+ pfile_info->version_needed = file_info->version_needed;
+ pfile_info->flag = file_info->flag;
+ pfile_info->compression_method = file_info->compression_method;
+ pfile_info->mz_dos_date = mz_zip_time_t_to_dos_date(file_info->modified_date);
+ //mz_zip_time_t_to_tm(file_info->modified_date, &pfile_info->tmu_date);
+ //pfile_info->tmu_date.tm_year += 1900;
+ pfile_info->crc = file_info->crc;
+
+ pfile_info->size_filename = file_info->filename_size;
+ pfile_info->size_file_extra = file_info->extrafield_size;
+ pfile_info->size_file_comment = file_info->comment_size;
+
+ pfile_info->disk_num_start = (uint16_t)file_info->disk_number;
+ pfile_info->internal_fa = file_info->internal_fa;
+ pfile_info->external_fa = file_info->external_fa;
+
+ pfile_info->compressed_size = (uint32_t)file_info->compressed_size;
+ pfile_info->uncompressed_size = (uint32_t)file_info->uncompressed_size;
+
+ if (filename_size > 0 && filename != NULL && file_info->filename != NULL)
+ {
+ bytes_to_copy = filename_size;
+ if (bytes_to_copy > file_info->filename_size)
+ bytes_to_copy = file_info->filename_size;
+ memcpy(filename, file_info->filename, bytes_to_copy);
+ if (bytes_to_copy < filename_size)
+ filename[bytes_to_copy] = 0;
+ }
+ if (extrafield_size > 0 && extrafield != NULL)
+ {
+ bytes_to_copy = extrafield_size;
+ if (bytes_to_copy > file_info->extrafield_size)
+ bytes_to_copy = file_info->extrafield_size;
+ memcpy(extrafield, file_info->extrafield, bytes_to_copy);
+ }
+ if (comment_size > 0 && comment != NULL && file_info->comment != NULL)
+ {
+ bytes_to_copy = comment_size;
+ if (bytes_to_copy > file_info->comment_size)
+ bytes_to_copy = file_info->comment_size;
+ memcpy(comment, file_info->comment, bytes_to_copy);
+ if (bytes_to_copy < comment_size)
+ comment[bytes_to_copy] = 0;
+ }
+ }
+ return err;
+}
+
+int unzGetCurrentFileInfo64(unzFile file, unz_file_info64 * pfile_info, char *filename,
+ uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size)
+{
+ mz_compat *compat = (mz_compat *)file;
+ mz_zip_file *file_info = NULL;
+ uint16_t bytes_to_copy = 0;
+ int32_t err = MZ_OK;
+
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+
+ err = mz_zip_entry_get_info(compat->handle, &file_info);
+
+ if ((err == MZ_OK) && (pfile_info != NULL))
+ {
+ pfile_info->version = file_info->version_madeby;
+ pfile_info->version_needed = file_info->version_needed;
+ pfile_info->flag = file_info->flag;
+ pfile_info->compression_method = file_info->compression_method;
+ pfile_info->mz_dos_date = mz_zip_time_t_to_dos_date(file_info->modified_date);
+ //mz_zip_time_t_to_tm(file_info->modified_date, &pfile_info->tmu_date);
+ //pfile_info->tmu_date.tm_year += 1900;
+ pfile_info->crc = file_info->crc;
+
+ pfile_info->size_filename = file_info->filename_size;
+ pfile_info->size_file_extra = file_info->extrafield_size;
+ pfile_info->size_file_comment = file_info->comment_size;
+
+ pfile_info->disk_num_start = file_info->disk_number;
+ pfile_info->internal_fa = file_info->internal_fa;
+ pfile_info->external_fa = file_info->external_fa;
+
+ pfile_info->compressed_size = (uint64_t)file_info->compressed_size;
+ pfile_info->uncompressed_size = (uint64_t)file_info->uncompressed_size;
+
+ if (filename_size > 0 && filename != NULL && file_info->filename != NULL)
+ {
+ bytes_to_copy = filename_size;
+ if (bytes_to_copy > file_info->filename_size)
+ bytes_to_copy = file_info->filename_size;
+ memcpy(filename, file_info->filename, bytes_to_copy);
+ if (bytes_to_copy < filename_size)
+ filename[bytes_to_copy] = 0;
+ }
+
+ if (extrafield_size > 0 && extrafield != NULL)
+ {
+ bytes_to_copy = extrafield_size;
+ if (bytes_to_copy > file_info->extrafield_size)
+ bytes_to_copy = file_info->extrafield_size;
+ memcpy(extrafield, file_info->extrafield, bytes_to_copy);
+ }
+
+ if (comment_size > 0 && comment != NULL && file_info->comment != NULL)
+ {
+ bytes_to_copy = comment_size;
+ if (bytes_to_copy > file_info->comment_size)
+ bytes_to_copy = file_info->comment_size;
+ memcpy(comment, file_info->comment, bytes_to_copy);
+ if (bytes_to_copy < comment_size)
+ comment[bytes_to_copy] = 0;
+ }
+ }
+ return err;
+}
+
+int unzGoToFirstFile(unzFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+ compat->entry_index = 0;
+ return mz_zip_goto_first_entry(compat->handle);
+}
+
+int unzGoToNextFile(unzFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ int32_t err = MZ_OK;
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+ err = mz_zip_goto_next_entry(compat->handle);
+ if (err != MZ_END_OF_LIST)
+ compat->entry_index += 1;
+ return err;
+}
+
+int unzLocateFile(unzFile file, const char *filename, unzFileNameComparer filename_compare_func)
+{
+ mz_compat *compat = (mz_compat *)file;
+ mz_zip_file *file_info = NULL;
+ uint64_t preserve_index = 0;
+ int32_t err = MZ_OK;
+ int32_t result = 0;
+
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+
+ preserve_index = compat->entry_index;
+
+ err = mz_zip_goto_first_entry(compat->handle);
+ while (err == MZ_OK)
+ {
+ err = mz_zip_entry_get_info(compat->handle, &file_info);
+ if (err != MZ_OK)
+ break;
+
+ if (filename_compare_func != NULL)
+ result = filename_compare_func(file, filename, file_info->filename);
+ else
+ result = strcmp(filename, file_info->filename);
+
+ if (result == 0)
+ return MZ_OK;
+
+ err = mz_zip_goto_next_entry(compat->handle);
+ }
+
+ compat->entry_index = preserve_index;
+ return err;
+}
+
+/***************************************************************************/
+
+int unzGetFilePos(unzFile file, unz_file_pos *file_pos)
+{
+ mz_compat *compat = (mz_compat *)file;
+ int32_t offset = 0;
+
+ if (compat == NULL || file_pos == NULL)
+ return UNZ_PARAMERROR;
+
+ offset = unzGetOffset(file);
+ if (offset < 0)
+ return offset;
+
+ file_pos->pos_in_zip_directory = (uint32_t)offset;
+ file_pos->num_of_file = (uint32_t)compat->entry_index;
+ return MZ_OK;
+}
+
+int unzGoToFilePos(unzFile file, unz_file_pos *file_pos)
+{
+ mz_compat *compat = (mz_compat *)file;
+ unz64_file_pos file_pos64;
+
+ if (compat == NULL || file_pos == NULL)
+ return UNZ_PARAMERROR;
+
+ file_pos64.pos_in_zip_directory = file_pos->pos_in_zip_directory;
+ file_pos64.num_of_file = file_pos->num_of_file;
+
+ return unzGoToFilePos64(file, &file_pos64);
+}
+
+int unzGetFilePos64(unzFile file, unz64_file_pos *file_pos)
+{
+ mz_compat *compat = (mz_compat *)file;
+ int64_t offset = 0;
+
+ if (compat == NULL || file_pos == NULL)
+ return UNZ_PARAMERROR;
+
+ offset = unzGetOffset64(file);
+ if (offset < 0)
+ return (int)offset;
+
+ file_pos->pos_in_zip_directory = offset;
+ file_pos->num_of_file = compat->entry_index;
+ return UNZ_OK;
+}
+
+int unzGoToFilePos64(unzFile file, const unz64_file_pos *file_pos)
+{
+ mz_compat *compat = (mz_compat *)file;
+ int32_t err = MZ_OK;
+
+ if (compat == NULL || file_pos == NULL)
+ return UNZ_PARAMERROR;
+
+ err = mz_zip_goto_entry(compat->handle, file_pos->pos_in_zip_directory);
+ if (err == MZ_OK)
+ compat->entry_index = file_pos->num_of_file;
+ return err;
+}
+
+int32_t unzGetOffset(unzFile file)
+{
+ return (int32_t)unzGetOffset64(file);
+}
+
+int64_t unzGetOffset64(unzFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+ return mz_zip_get_entry(compat->handle);
+}
+
+int unzSetOffset(unzFile file, uint32_t pos)
+{
+ return unzSetOffset64(file, pos);
+}
+
+int unzSetOffset64(unzFile file, int64_t pos)
+{
+ mz_compat *compat = (mz_compat *)file;
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+ return (int)mz_zip_goto_entry(compat->handle, pos);
+}
+
+int unzGetLocalExtrafield(unzFile file, void *buf, unsigned int len)
+{
+ mz_compat *compat = (mz_compat *)file;
+ mz_zip_file *file_info = NULL;
+ int32_t err = MZ_OK;
+ int32_t bytes_to_copy = 0;
+
+ if (compat == NULL || buf == NULL || len >= INT32_MAX)
+ return UNZ_PARAMERROR;
+
+ err = mz_zip_entry_get_local_info(compat->handle, &file_info);
+ if (err != MZ_OK)
+ return err;
+
+ bytes_to_copy = (int32_t)len;
+ if (bytes_to_copy > file_info->extrafield_size)
+ bytes_to_copy = file_info->extrafield_size;
+
+ memcpy(buf, file_info->extrafield, bytes_to_copy);
+ return MZ_OK;
+}
+
+int64_t unztell(unzFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+ return (int64_t)compat->total_out;
+}
+
+int32_t unzTell(unzFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+ return (int32_t)compat->total_out;
+}
+
+int64_t unzTell64(unzFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+ return (int64_t)compat->total_out;
+}
+
+int unzSeek(unzFile file, int32_t offset, int origin)
+{
+ return unzSeek64(file, offset, origin);
+}
+
+int unzSeek64(unzFile file, int64_t offset, int origin)
+{
+ mz_compat *compat = (mz_compat *)file;
+ mz_zip_file *file_info = NULL;
+ int64_t position = 0;
+ int32_t err = MZ_OK;
+ void *stream = NULL;
+
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+ err = mz_zip_entry_get_info(compat->handle, &file_info);
+ if (err != MZ_OK)
+ return err;
+ if (file_info->compression_method != MZ_COMPRESS_METHOD_STORE)
+ return UNZ_ERRNO;
+
+ if (origin == SEEK_SET)
+ position = offset;
+ else if (origin == SEEK_CUR)
+ position = compat->total_out + offset;
+ else if (origin == SEEK_END)
+ position = (int64_t)file_info->compressed_size + offset;
+ else
+ return UNZ_PARAMERROR;
+
+ if (position > (int64_t)file_info->compressed_size)
+ return UNZ_PARAMERROR;
+
+ err = mz_zip_get_stream(compat->handle, &stream);
+ if (err == MZ_OK)
+ err = mz_stream_seek(stream, compat->entry_pos + position, MZ_SEEK_SET);
+ if (err == MZ_OK)
+ compat->total_out = position;
+ return err;
+}
+
+int unzEndOfFile(unzFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ mz_zip_file *file_info = NULL;
+ int32_t err = MZ_OK;
+
+ if (compat == NULL)
+ return UNZ_PARAMERROR;
+ err = mz_zip_entry_get_info(compat->handle, &file_info);
+ if (err != MZ_OK)
+ return err;
+ if (compat->total_out == (int64_t)file_info->uncompressed_size)
+ return 1;
+ return 0;
+}
+
+void* unzGetStream(unzFile file)
+{
+ mz_compat *compat = (mz_compat *)file;
+ if (compat == NULL)
+ return NULL;
+ return (void *)compat->stream;
+}
+
+/***************************************************************************/
+
+void fill_fopen_filefunc(zlib_filefunc_def *pzlib_filefunc_def)
+{
+ if (pzlib_filefunc_def != NULL)
+ *pzlib_filefunc_def = mz_stream_os_get_interface();
+}
+
+void fill_fopen64_filefunc(zlib_filefunc64_def *pzlib_filefunc_def)
+{
+ if (pzlib_filefunc_def != NULL)
+ *pzlib_filefunc_def = mz_stream_os_get_interface();
+}
+
+void fill_win32_filefunc(zlib_filefunc_def *pzlib_filefunc_def)
+{
+ if (pzlib_filefunc_def != NULL)
+ *pzlib_filefunc_def = mz_stream_os_get_interface();
+}
+
+void fill_win32_filefunc64(zlib_filefunc64_def *pzlib_filefunc_def)
+{
+ if (pzlib_filefunc_def != NULL)
+ *pzlib_filefunc_def = mz_stream_os_get_interface();
+}
+
+void fill_win32_filefunc64A(zlib_filefunc64_def *pzlib_filefunc_def)
+{
+ if (pzlib_filefunc_def != NULL)
+ *pzlib_filefunc_def = mz_stream_os_get_interface();
+}
+
+void fill_win32_filefunc64W(zlib_filefunc64_def *pzlib_filefunc_def)
+{
+ /* NOTE: You should no longer pass in widechar string to open function */
+ if (pzlib_filefunc_def != NULL)
+ *pzlib_filefunc_def = mz_stream_os_get_interface();
+}
+
+void fill_memory_filefunc(zlib_filefunc_def *pzlib_filefunc_def)
+{
+ if (pzlib_filefunc_def != NULL)
+ *pzlib_filefunc_def = mz_stream_mem_get_interface();
+}
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_compat.h b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_compat.h
new file mode 100644
index 0000000..3253eb9
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_compat.h
@@ -0,0 +1,250 @@
+/* mz_compat.h -- Backwards compatible interface for older versions
+ Version 2.8.6, April 8, 2019
+ part of the MiniZip project
+
+ Copyright (C) 2010-2019 Nathan Moinvaziri
+ https://github.com/nmoinvaz/minizip
+ Copyright (C) 1998-2010 Gilles Vollant
+ https://www.winimage.com/zLibDll/minizip.html
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#ifndef MZ_COMPAT_H
+#define MZ_COMPAT_H
+
+#include "mz.h"
+#include "../SSZipCommon.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************/
+
+#if defined(HAVE_ZLIB) && defined(MAX_MEM_LEVEL)
+#ifndef DEF_MEM_LEVEL
+# if MAX_MEM_LEVEL >= 8
+# define DEF_MEM_LEVEL 8
+# else
+# define DEF_MEM_LEVEL MAX_MEM_LEVEL
+# endif
+#endif
+#endif
+#ifndef MAX_WBITS
+#define MAX_WBITS 15
+#endif
+#ifndef DEF_MEM_LEVEL
+#define DEF_MEM_LEVEL 8
+#endif
+
+#ifndef ZEXPORT
+# define ZEXPORT MZ_EXPORT
+#endif
+
+/***************************************************************************/
+
+#if defined(STRICTZIP) || defined(STRICTZIPUNZIP)
+/* like the STRICT of WIN32, we define a pointer that cannot be converted
+ from (void*) without cast */
+typedef struct TagzipFile__ { int unused; } zip_file__;
+typedef zip_file__ *zipFile;
+#else
+typedef void *zipFile;
+#endif
+
+/***************************************************************************/
+
+typedef void *zlib_filefunc_def;
+typedef void *zlib_filefunc64_def;
+typedef const char *zipcharpc;
+
+typedef struct tm tm_unz;
+typedef struct tm tm_zip;
+
+typedef uint64_t ZPOS64_T;
+
+/***************************************************************************/
+
+// ZipArchive 2.x uses dos_date
+#define MZ_COMPAT_VERSION 120
+
+#if MZ_COMPAT_VERSION <= 110
+#define mz_dos_date dosDate
+#else
+#define mz_dos_date dos_date
+#endif
+
+typedef struct
+{
+ uint32_t mz_dos_date;
+ struct tm tmz_date;
+ uint16_t internal_fa; /* internal file attributes 2 bytes */
+ uint32_t external_fa; /* external file attributes 4 bytes */
+} zip_fileinfo;
+
+/***************************************************************************/
+
+#define ZIP_OK (0)
+#define ZIP_EOF (0)
+#define ZIP_ERRNO (-1)
+#define ZIP_PARAMERROR (-102)
+#define ZIP_BADZIPFILE (-103)
+#define ZIP_INTERNALERROR (-104)
+
+#define Z_BZIP2ED (12)
+
+#define APPEND_STATUS_CREATE (0)
+#define APPEND_STATUS_CREATEAFTER (1)
+#define APPEND_STATUS_ADDINZIP (2)
+
+/***************************************************************************/
+/* Writing a zip file */
+
+ZEXPORT zipFile zipOpen(const char *path, int append);
+ZEXPORT zipFile zipOpen64(const void *path, int append);
+ZEXPORT zipFile zipOpen2(const char *path, int append, const char **globalcomment,
+ zlib_filefunc_def *pzlib_filefunc_def);
+ZEXPORT zipFile zipOpen2_64(const void *path, int append, const char **globalcomment,
+ zlib_filefunc64_def *pzlib_filefunc_def);
+ zipFile zipOpen_MZ(void *stream, int append, const char **globalcomment);
+
+ZEXPORT int zipOpenNewFileInZip5(zipFile file, const char *filename, const zip_fileinfo *zipfi,
+ const void *extrafield_local, uint16_t size_extrafield_local, const void *extrafield_global,
+ uint16_t size_extrafield_global, const char *comment, uint16_t compression_method, int level,
+ int raw, int windowBits, int memLevel, int strategy, const char *password,
+ signed char aes, uint16_t version_madeby, uint16_t flag_base, int zip64);
+
+ZEXPORT int zipWriteInFileInZip(zipFile file, const void *buf, uint32_t len);
+
+ZEXPORT int zipCloseFileInZipRaw(zipFile file, uint32_t uncompressed_size, uint32_t crc32);
+ZEXPORT int zipCloseFileInZipRaw64(zipFile file, int64_t uncompressed_size, uint32_t crc32);
+ZEXPORT int zipCloseFileInZip(zipFile file);
+ZEXPORT int zipCloseFileInZip64(zipFile file);
+
+ZEXPORT int zipClose(zipFile file, const char *global_comment);
+ZEXPORT int zipClose_64(zipFile file, const char *global_comment);
+ZEXPORT int zipClose2_64(zipFile file, const char *global_comment, uint16_t version_madeby);
+ int zipClose_MZ(zipFile file, const char *global_comment);
+ int zipClose2_MZ(zipFile file, const char *global_comment, uint16_t version_madeby);
+ZEXPORT void* zipGetStream(zipFile file);
+
+/***************************************************************************/
+
+#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
+/* like the STRICT of WIN32, we define a pointer that cannot be converted
+ from (void*) without cast */
+typedef struct TagunzFile__ { int unused; } unz_file__;
+typedef unz_file__ *unzFile;
+#else
+typedef void *unzFile;
+#endif
+
+/***************************************************************************/
+
+#define UNZ_OK (0)
+#define UNZ_END_OF_LIST_OF_FILE (-100)
+#define UNZ_ERRNO (-1)
+#define UNZ_EOF (0)
+#define UNZ_PARAMERROR (-102)
+#define UNZ_BADZIPFILE (-103)
+#define UNZ_INTERNALERROR (-104)
+#define UNZ_CRCERROR (-105)
+#define UNZ_BADPASSWORD (-106)
+
+/***************************************************************************/
+
+typedef int (*unzFileNameComparer)(unzFile file, const char *filename1, const char *filename2);
+typedef int (*unzIteratorFunction)(unzFile file);
+typedef int (*unzIteratorFunction2)(unzFile file, unz_file_info64 *pfile_info, char *filename,
+ uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment,
+ uint16_t comment_size);
+
+/***************************************************************************/
+/* Reading a zip file */
+
+ZEXPORT unzFile unzOpen(const char *path);
+ZEXPORT unzFile unzOpen64(const void *path);
+ZEXPORT unzFile unzOpen2(const char *path, zlib_filefunc_def *pzlib_filefunc_def);
+ZEXPORT unzFile unzOpen2_64(const void *path, zlib_filefunc64_def *pzlib_filefunc_def);
+ unzFile unzOpen_MZ(void *stream);
+
+ZEXPORT int unzClose(unzFile file);
+ int unzClose_MZ(unzFile file);
+
+ZEXPORT int unzGetGlobalInfo(unzFile file, unz_global_info* pglobal_info32);
+ZEXPORT int unzGetGlobalInfo64(unzFile file, unz_global_info64 *pglobal_info);
+ZEXPORT int unzGetGlobalComment(unzFile file, char *comment, uint16_t comment_size);
+
+ZEXPORT int unzOpenCurrentFile(unzFile file);
+ZEXPORT int unzOpenCurrentFilePassword(unzFile file, const char *password);
+ZEXPORT int unzOpenCurrentFile2(unzFile file, int *method, int *level, int raw);
+ZEXPORT int unzOpenCurrentFile3(unzFile file, int *method, int *level, int raw, const char *password);
+ZEXPORT int unzReadCurrentFile(unzFile file, void *buf, uint32_t len);
+ZEXPORT int unzCloseCurrentFile(unzFile file);
+
+
+ZEXPORT int unzGetCurrentFileInfo(unzFile file, unz_file_info *pfile_info, char *filename,
+ uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment,
+ uint16_t comment_size);
+ZEXPORT int unzGetCurrentFileInfo64(unzFile file, unz_file_info64 * pfile_info, char *filename,
+ uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment,
+ uint16_t comment_size);
+
+ZEXPORT int unzGoToFirstFile(unzFile file);
+ZEXPORT int unzGoToNextFile(unzFile file);
+ZEXPORT int unzLocateFile(unzFile file, const char *filename, unzFileNameComparer filename_compare_func);
+
+ZEXPORT int unzGetLocalExtrafield(unzFile file, void *buf, unsigned int len);
+
+/***************************************************************************/
+/* Raw access to zip file */
+
+typedef struct unz_file_pos_s
+{
+ uint32_t pos_in_zip_directory; /* offset in zip file directory */
+ uint32_t num_of_file; /* # of file */
+} unz_file_pos;
+
+ZEXPORT int unzGetFilePos(unzFile file, unz_file_pos *file_pos);
+ZEXPORT int unzGoToFilePos(unzFile file, unz_file_pos *file_pos);
+
+typedef struct unz64_file_pos_s
+{
+ int64_t pos_in_zip_directory; /* offset in zip file directory */
+ uint64_t num_of_file; /* # of file */
+} unz64_file_pos;
+
+ZEXPORT int unzGetFilePos64(unzFile file, unz64_file_pos *file_pos);
+ZEXPORT int unzGoToFilePos64(unzFile file, const unz64_file_pos *file_pos);
+
+ZEXPORT int64_t unzGetOffset64(unzFile file);
+ZEXPORT int32_t unzGetOffset(unzFile file);
+ZEXPORT int unzSetOffset64(unzFile file, int64_t pos);
+ZEXPORT int unzSetOffset(unzFile file, uint32_t pos);
+ZEXPORT int64_t unztell(unzFile file);
+ZEXPORT int32_t unzTell(unzFile file);
+ZEXPORT int64_t unzTell64(unzFile file);
+ZEXPORT int unzSeek(unzFile file, int32_t offset, int origin);
+ZEXPORT int unzSeek64(unzFile file, int64_t offset, int origin);
+ZEXPORT int unzEndOfFile(unzFile file);
+ZEXPORT void* unzGetStream(unzFile file);
+
+/***************************************************************************/
+
+ZEXPORT void fill_fopen_filefunc(zlib_filefunc_def *pzlib_filefunc_def);
+ZEXPORT void fill_fopen64_filefunc(zlib_filefunc64_def *pzlib_filefunc_def);
+ZEXPORT void fill_win32_filefunc(zlib_filefunc_def *pzlib_filefunc_def);
+ZEXPORT void fill_win32_filefunc64(zlib_filefunc64_def *pzlib_filefunc_def);
+ZEXPORT void fill_win32_filefunc64A(zlib_filefunc64_def *pzlib_filefunc_def);
+ZEXPORT void fill_win32_filefunc64W(zlib_filefunc64_def *pzlib_filefunc_def);
+ZEXPORT void fill_memory_filefunc(zlib_filefunc_def *pzlib_filefunc_def);
+
+/***************************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_crypt.c b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_crypt.c
new file mode 100644
index 0000000..dd2cd42
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_crypt.c
@@ -0,0 +1,196 @@
+/* mz_crypt.c -- Crypto/hash functions
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+
+#include "mz.h"
+#include "mz_os.h"
+#include "mz_crypt.h"
+
+#if defined(HAVE_ZLIB)
+# include "zlib.h"
+# if defined(ZLIBNG_VERNUM) && !defined(ZLIB_COMPAT)
+# include "zlib-ng.h"
+# endif
+#elif defined(HAVE_LZMA)
+# include "lzma.h"
+#endif
+
+/***************************************************************************/
+/* Define z_crc_t in zlib 1.2.5 and less or if using zlib-ng */
+
+#if defined(HAVE_ZLIB) && defined(ZLIBNG_VERNUM)
+# if defined(ZLIB_COMPAT)
+# define ZLIB_PREFIX(x) x
+# else
+# define ZLIB_PREFIX(x) zng_ ## x
+# endif
+ typedef uint32_t z_crc_t;
+#elif defined(HAVE_ZLIB)
+# define ZLIB_PREFIX(x) x
+# if (ZLIB_VERNUM < 0x1270)
+ typedef unsigned long z_crc_t;
+# endif
+#endif
+
+/***************************************************************************/
+
+#if defined(MZ_ZIP_NO_CRYPTO)
+int32_t mz_crypt_rand(uint8_t *buf, int32_t size) {
+ return mz_os_rand(buf, size);
+}
+#endif
+
+uint32_t mz_crypt_crc32_update(uint32_t value, const uint8_t *buf, int32_t size) {
+#if defined(HAVE_ZLIB)
+ return (uint32_t)ZLIB_PREFIX(crc32)((z_crc_t)value, buf, (uInt)size);
+#elif defined(HAVE_LZMA)
+ return (uint32_t)lzma_crc32(buf, (size_t)size, (uint32_t)value);
+#else
+ static uint32_t crc32_table[256] = {
+ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
+ 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
+ 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
+ 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+ 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
+ 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
+ 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+ 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
+ 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
+ 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+ 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
+ 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
+ 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+ 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
+ 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
+ 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
+ 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
+ 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
+ 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
+ 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
+ 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
+ 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
+ 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+ 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
+ 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
+ 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+ 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
+ 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
+ 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+ 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
+ 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
+ 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
+ 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
+ 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
+ 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
+ };
+ value = ~value;
+
+ while (size > 0) {
+ value = (value >> 8) ^ crc32_table[(value ^ *buf) & 0xFF];
+
+ buf += 1;
+ size -= 1;
+ }
+
+ return ~value;
+#endif
+}
+
+#if defined(HAVE_WZAES)
+int32_t mz_crypt_pbkdf2(uint8_t *password, int32_t password_length, uint8_t *salt,
+ int32_t salt_length, int32_t iteration_count, uint8_t *key, int32_t key_length) {
+ void *hmac1 = NULL;
+ void *hmac2 = NULL;
+ void *hmac3 = NULL;
+ int32_t err = MZ_OK;
+ uint16_t i = 0;
+ uint16_t j = 0;
+ uint16_t k = 0;
+ uint16_t block_count = 0;
+ uint8_t uu[MZ_HASH_SHA1_SIZE];
+ uint8_t ux[MZ_HASH_SHA1_SIZE];
+
+ if (password == NULL || salt == NULL || key == NULL)
+ return MZ_PARAM_ERROR;
+
+ memset(key, 0, key_length);
+
+ mz_crypt_hmac_create(&hmac1);
+ mz_crypt_hmac_create(&hmac2);
+ mz_crypt_hmac_create(&hmac3);
+
+ mz_crypt_hmac_set_algorithm(hmac1, MZ_HASH_SHA1);
+ mz_crypt_hmac_set_algorithm(hmac2, MZ_HASH_SHA1);
+ mz_crypt_hmac_set_algorithm(hmac3, MZ_HASH_SHA1);
+
+ err = mz_crypt_hmac_init(hmac1, password, password_length);
+ if (err == MZ_OK)
+ err = mz_crypt_hmac_init(hmac2, password, password_length);
+ if (err == MZ_OK)
+ err = mz_crypt_hmac_update(hmac2, salt, salt_length);
+
+ block_count = 1 + ((uint16_t)key_length - 1) / MZ_HASH_SHA1_SIZE;
+
+ for (i = 0; (err == MZ_OK) && (i < block_count); i += 1) {
+ memset(ux, 0, sizeof(ux));
+
+ err = mz_crypt_hmac_copy(hmac2, hmac3);
+ if (err != MZ_OK)
+ break;
+
+ uu[0] = (uint8_t)((i + 1) >> 24);
+ uu[1] = (uint8_t)((i + 1) >> 16);
+ uu[2] = (uint8_t)((i + 1) >> 8);
+ uu[3] = (uint8_t)(i + 1);
+
+ for (j = 0, k = 4; j < iteration_count; j += 1) {
+ err = mz_crypt_hmac_update(hmac3, uu, k);
+ if (err == MZ_OK)
+ err = mz_crypt_hmac_end(hmac3, uu, sizeof(uu));
+ if (err != MZ_OK)
+ break;
+
+ for(k = 0; k < MZ_HASH_SHA1_SIZE; k += 1)
+ ux[k] ^= uu[k];
+
+ err = mz_crypt_hmac_copy(hmac1, hmac3);
+ if (err != MZ_OK)
+ break;
+ }
+
+ if (err != MZ_OK)
+ break;
+
+ j = 0;
+ k = i * MZ_HASH_SHA1_SIZE;
+
+ while (j < MZ_HASH_SHA1_SIZE && k < key_length)
+ key[k++] = ux[j++];
+ }
+
+ /* hmac3 uses the same provider as hmac2, so it must be deleted
+ before the context is destroyed. */
+ mz_crypt_hmac_delete(&hmac3);
+ mz_crypt_hmac_delete(&hmac1);
+ mz_crypt_hmac_delete(&hmac2);
+
+ return err;
+}
+#endif
+
+/***************************************************************************/
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_crypt.h b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_crypt.h
new file mode 100644
index 0000000..59a193c
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_crypt.h
@@ -0,0 +1,65 @@
+/* mz_crypt.h -- Crypto/hash functions
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#ifndef MZ_CRYPT_H
+#define MZ_CRYPT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************/
+
+uint32_t mz_crypt_crc32_update(uint32_t value, const uint8_t *buf, int32_t size);
+
+int32_t mz_crypt_pbkdf2(uint8_t *password, int32_t password_length, uint8_t *salt,
+ int32_t salt_length, int32_t iteration_count, uint8_t *key, int32_t key_length);
+
+/***************************************************************************/
+
+int32_t mz_crypt_rand(uint8_t *buf, int32_t size);
+
+void mz_crypt_sha_reset(void *handle);
+int32_t mz_crypt_sha_begin(void *handle);
+int32_t mz_crypt_sha_update(void *handle, const void *buf, int32_t size);
+int32_t mz_crypt_sha_end(void *handle, uint8_t *digest, int32_t digest_size);
+void mz_crypt_sha_set_algorithm(void *handle, uint16_t algorithm);
+void* mz_crypt_sha_create(void **handle);
+void mz_crypt_sha_delete(void **handle);
+
+void mz_crypt_aes_reset(void *handle);
+int32_t mz_crypt_aes_encrypt(void *handle, uint8_t *buf, int32_t size);
+int32_t mz_crypt_aes_decrypt(void *handle, uint8_t *buf, int32_t size);
+int32_t mz_crypt_aes_set_encrypt_key(void *handle, const void *key, int32_t key_length);
+int32_t mz_crypt_aes_set_decrypt_key(void *handle, const void *key, int32_t key_length);
+void mz_crypt_aes_set_mode(void *handle, int32_t mode);
+void* mz_crypt_aes_create(void **handle);
+void mz_crypt_aes_delete(void **handle);
+
+void mz_crypt_hmac_reset(void *handle);
+int32_t mz_crypt_hmac_init(void *handle, const void *key, int32_t key_length);
+int32_t mz_crypt_hmac_update(void *handle, const void *buf, int32_t size);
+int32_t mz_crypt_hmac_end(void *handle, uint8_t *digest, int32_t digest_size);
+int32_t mz_crypt_hmac_copy(void *src_handle, void *target_handle);
+void mz_crypt_hmac_set_algorithm(void *handle, uint16_t algorithm);
+void* mz_crypt_hmac_create(void **handle);
+void mz_crypt_hmac_delete(void **handle);
+
+int32_t mz_crypt_sign(uint8_t *message, int32_t message_size, uint8_t *cert_data, int32_t cert_data_size,
+ const char *cert_pwd, uint8_t **signature, int32_t *signature_size);
+int32_t mz_crypt_sign_verify(uint8_t *message, int32_t message_size, uint8_t *signature, int32_t signature_size);
+
+/***************************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_crypt_apple.c b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_crypt_apple.c
new file mode 100644
index 0000000..4519753
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_crypt_apple.c
@@ -0,0 +1,487 @@
+/* mz_crypt_apple.c -- Crypto/hash functions for Apple
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+
+#include "mz.h"
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+/***************************************************************************/
+
+int32_t mz_crypt_rand(uint8_t *buf, int32_t size) {
+ if (SecRandomCopyBytes(kSecRandomDefault, size, buf) != errSecSuccess)
+ return 0;
+ return size;
+}
+
+/***************************************************************************/
+
+typedef struct mz_crypt_sha_s {
+ CC_SHA1_CTX ctx1;
+ CC_SHA256_CTX ctx256;
+ int32_t error;
+ int32_t initialized;
+ uint16_t algorithm;
+} mz_crypt_sha;
+
+/***************************************************************************/
+
+void mz_crypt_sha_reset(void *handle) {
+ mz_crypt_sha *sha = (mz_crypt_sha *)handle;
+
+ sha->error = 0;
+ sha->initialized = 0;
+}
+
+int32_t mz_crypt_sha_begin(void *handle) {
+ mz_crypt_sha *sha = (mz_crypt_sha *)handle;
+
+ if (sha == NULL)
+ return MZ_PARAM_ERROR;
+
+ mz_crypt_sha_reset(handle);
+
+ if (sha->algorithm == MZ_HASH_SHA1)
+ sha->error = CC_SHA1_Init(&sha->ctx1);
+ else if (sha->algorithm == MZ_HASH_SHA256)
+ sha->error = CC_SHA256_Init(&sha->ctx256);
+ else
+ return MZ_PARAM_ERROR;
+
+ if (!sha->error)
+ return MZ_HASH_ERROR;
+
+ sha->initialized = 1;
+ return MZ_OK;
+}
+
+int32_t mz_crypt_sha_update(void *handle, const void *buf, int32_t size) {
+ mz_crypt_sha *sha = (mz_crypt_sha *)handle;
+
+ if (sha == NULL || buf == NULL || !sha->initialized)
+ return MZ_PARAM_ERROR;
+
+ if (sha->algorithm == MZ_HASH_SHA1)
+ sha->error = CC_SHA1_Update(&sha->ctx1, buf, size);
+ else
+ sha->error = CC_SHA256_Update(&sha->ctx256, buf, size);
+
+ if (!sha->error)
+ return MZ_HASH_ERROR;
+
+ return size;
+}
+
+int32_t mz_crypt_sha_end(void *handle, uint8_t *digest, int32_t digest_size) {
+ mz_crypt_sha *sha = (mz_crypt_sha *)handle;
+
+ if (sha == NULL || digest == NULL || !sha->initialized)
+ return MZ_PARAM_ERROR;
+
+ if (sha->algorithm == MZ_HASH_SHA1) {
+ if (digest_size < MZ_HASH_SHA1_SIZE)
+ return MZ_BUF_ERROR;
+ sha->error = CC_SHA1_Final(digest, &sha->ctx1);
+ } else {
+ if (digest_size < MZ_HASH_SHA256_SIZE)
+ return MZ_BUF_ERROR;
+ sha->error = CC_SHA256_Final(digest, &sha->ctx256);
+ }
+
+ if (!sha->error)
+ return MZ_HASH_ERROR;
+
+ return MZ_OK;
+}
+
+void mz_crypt_sha_set_algorithm(void *handle, uint16_t algorithm) {
+ mz_crypt_sha *sha = (mz_crypt_sha *)handle;
+ sha->algorithm = algorithm;
+}
+
+void *mz_crypt_sha_create(void **handle) {
+ mz_crypt_sha *sha = NULL;
+
+ sha = (mz_crypt_sha *)MZ_ALLOC(sizeof(mz_crypt_sha));
+ if (sha != NULL) {
+ memset(sha, 0, sizeof(mz_crypt_sha));
+ sha->algorithm = MZ_HASH_SHA256;
+ }
+ if (handle != NULL)
+ *handle = sha;
+
+ return sha;
+}
+
+void mz_crypt_sha_delete(void **handle) {
+ mz_crypt_sha *sha = NULL;
+ if (handle == NULL)
+ return;
+ sha = (mz_crypt_sha *)*handle;
+ if (sha != NULL) {
+ mz_crypt_sha_reset(*handle);
+ MZ_FREE(sha);
+ }
+ *handle = NULL;
+}
+
+/***************************************************************************/
+
+typedef struct mz_crypt_aes_s {
+ CCCryptorRef crypt;
+ int32_t mode;
+ int32_t error;
+} mz_crypt_aes;
+
+/***************************************************************************/
+
+void mz_crypt_aes_reset(void *handle) {
+ mz_crypt_aes *aes = (mz_crypt_aes *)handle;
+
+ if (aes->crypt != NULL)
+ CCCryptorRelease(aes->crypt);
+ aes->crypt = NULL;
+}
+
+int32_t mz_crypt_aes_encrypt(void *handle, uint8_t *buf, int32_t size) {
+ mz_crypt_aes *aes = (mz_crypt_aes *)handle;
+ size_t data_moved = 0;
+
+ if (aes == NULL || buf == NULL)
+ return MZ_PARAM_ERROR;
+ if (size != MZ_AES_BLOCK_SIZE)
+ return MZ_PARAM_ERROR;
+
+ aes->error = CCCryptorUpdate(aes->crypt, buf, size, buf, size, &data_moved);
+
+ if (aes->error != kCCSuccess)
+ return MZ_HASH_ERROR;
+
+ return size;
+}
+
+int32_t mz_crypt_aes_decrypt(void *handle, uint8_t *buf, int32_t size) {
+ mz_crypt_aes *aes = (mz_crypt_aes *)handle;
+ size_t data_moved = 0;
+
+ if (aes == NULL || buf == NULL)
+ return MZ_PARAM_ERROR;
+ if (size != MZ_AES_BLOCK_SIZE)
+ return MZ_PARAM_ERROR;
+
+ aes->error = CCCryptorUpdate(aes->crypt, buf, size, buf, size, &data_moved);
+
+ if (aes->error != kCCSuccess)
+ return MZ_HASH_ERROR;
+
+ return size;
+}
+
+int32_t mz_crypt_aes_set_encrypt_key(void *handle, const void *key, int32_t key_length) {
+ mz_crypt_aes *aes = (mz_crypt_aes *)handle;
+
+
+ if (aes == NULL || key == NULL || key_length == 0)
+ return MZ_PARAM_ERROR;
+
+ mz_crypt_aes_reset(handle);
+
+ aes->error = CCCryptorCreate(kCCEncrypt, kCCAlgorithmAES, kCCOptionECBMode,
+ key, key_length, NULL, &aes->crypt);
+
+ if (aes->error != kCCSuccess)
+ return MZ_HASH_ERROR;
+
+ return MZ_OK;
+}
+
+int32_t mz_crypt_aes_set_decrypt_key(void *handle, const void *key, int32_t key_length) {
+ mz_crypt_aes *aes = (mz_crypt_aes *)handle;
+
+
+ if (aes == NULL || key == NULL || key_length == 0)
+ return MZ_PARAM_ERROR;
+
+ mz_crypt_aes_reset(handle);
+
+ aes->error = CCCryptorCreate(kCCDecrypt, kCCAlgorithmAES, kCCOptionECBMode,
+ key, key_length, NULL, &aes->crypt);
+
+ if (aes->error != kCCSuccess)
+ return MZ_HASH_ERROR;
+
+ return MZ_OK;
+}
+
+void mz_crypt_aes_set_mode(void *handle, int32_t mode) {
+ mz_crypt_aes *aes = (mz_crypt_aes *)handle;
+ aes->mode = mode;
+}
+
+void *mz_crypt_aes_create(void **handle) {
+ mz_crypt_aes *aes = NULL;
+
+ aes = (mz_crypt_aes *)MZ_ALLOC(sizeof(mz_crypt_aes));
+ if (aes != NULL)
+ memset(aes, 0, sizeof(mz_crypt_aes));
+ if (handle != NULL)
+ *handle = aes;
+
+ return aes;
+}
+
+void mz_crypt_aes_delete(void **handle) {
+ mz_crypt_aes *aes = NULL;
+ if (handle == NULL)
+ return;
+ aes = (mz_crypt_aes *)*handle;
+ if (aes != NULL) {
+ mz_crypt_aes_reset(*handle);
+ MZ_FREE(aes);
+ }
+ *handle = NULL;
+}
+
+/***************************************************************************/
+
+typedef struct mz_crypt_hmac_s {
+ CCHmacContext ctx;
+ int32_t initialized;
+ int32_t error;
+ uint16_t algorithm;
+} mz_crypt_hmac;
+
+/***************************************************************************/
+
+static void mz_crypt_hmac_free(void *handle) {
+ mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle;
+ memset(&hmac->ctx, 0, sizeof(hmac->ctx));
+}
+
+void mz_crypt_hmac_reset(void *handle) {
+ mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle;
+ mz_crypt_hmac_free(handle);
+ hmac->error = 0;
+}
+
+int32_t mz_crypt_hmac_init(void *handle, const void *key, int32_t key_length) {
+ mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle;
+ CCHmacAlgorithm algorithm = 0;
+
+ if (hmac == NULL || key == NULL)
+ return MZ_PARAM_ERROR;
+
+ mz_crypt_hmac_reset(handle);
+
+ if (hmac->algorithm == MZ_HASH_SHA1)
+ algorithm = kCCHmacAlgSHA1;
+ else if (hmac->algorithm == MZ_HASH_SHA256)
+ algorithm = kCCHmacAlgSHA256;
+ else
+ return MZ_PARAM_ERROR;
+
+ CCHmacInit(&hmac->ctx, algorithm, key, key_length);
+ return MZ_OK;
+}
+
+int32_t mz_crypt_hmac_update(void *handle, const void *buf, int32_t size) {
+ mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle;
+
+ if (hmac == NULL || buf == NULL)
+ return MZ_PARAM_ERROR;
+
+ CCHmacUpdate(&hmac->ctx, buf, size);
+ return MZ_OK;
+}
+
+int32_t mz_crypt_hmac_end(void *handle, uint8_t *digest, int32_t digest_size) {
+ mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle;
+
+ if (hmac == NULL || digest == NULL)
+ return MZ_PARAM_ERROR;
+
+ if (hmac->algorithm == MZ_HASH_SHA1) {
+ if (digest_size < MZ_HASH_SHA1_SIZE)
+ return MZ_BUF_ERROR;
+ CCHmacFinal(&hmac->ctx, digest);
+ } else {
+ if (digest_size < MZ_HASH_SHA256_SIZE)
+ return MZ_BUF_ERROR;
+ CCHmacFinal(&hmac->ctx, digest);
+ }
+
+ return MZ_OK;
+}
+
+void mz_crypt_hmac_set_algorithm(void *handle, uint16_t algorithm) {
+ mz_crypt_hmac *hmac = (mz_crypt_hmac *)handle;
+ hmac->algorithm = algorithm;
+}
+
+int32_t mz_crypt_hmac_copy(void *src_handle, void *target_handle) {
+ mz_crypt_hmac *source = (mz_crypt_hmac *)src_handle;
+ mz_crypt_hmac *target = (mz_crypt_hmac *)target_handle;
+
+ if (source == NULL || target == NULL)
+ return MZ_PARAM_ERROR;
+
+ memcpy(&target->ctx, &source->ctx, sizeof(CCHmacContext));
+ return MZ_OK;
+}
+
+void *mz_crypt_hmac_create(void **handle) {
+ mz_crypt_hmac *hmac = NULL;
+
+ hmac = (mz_crypt_hmac *)MZ_ALLOC(sizeof(mz_crypt_hmac));
+ if (hmac != NULL) {
+ memset(hmac, 0, sizeof(mz_crypt_hmac));
+ hmac->algorithm = MZ_HASH_SHA256;
+ }
+ if (handle != NULL)
+ *handle = hmac;
+
+ return hmac;
+}
+
+void mz_crypt_hmac_delete(void **handle) {
+ mz_crypt_hmac *hmac = NULL;
+ if (handle == NULL)
+ return;
+ hmac = (mz_crypt_hmac *)*handle;
+ if (hmac != NULL) {
+ mz_crypt_hmac_free(*handle);
+ MZ_FREE(hmac);
+ }
+ *handle = NULL;
+}
+
+/***************************************************************************/
+
+#if defined(MZ_ZIP_SIGNING)
+int32_t mz_crypt_sign(uint8_t *message, int32_t message_size, uint8_t *cert_data, int32_t cert_data_size,
+ const char *cert_pwd, uint8_t **signature, int32_t *signature_size) {
+ CFStringRef password_ref = NULL;
+ CFDictionaryRef options_dict = NULL;
+ CFDictionaryRef identity_trust = NULL;
+ CFDataRef signature_out = NULL;
+ CFDataRef pkcs12_data = NULL;
+ CFArrayRef items = 0;
+ SecIdentityRef identity = NULL;
+ SecTrustRef trust = NULL;
+ OSStatus status = noErr;
+ const void *options_key[2] = { kSecImportExportPassphrase, kSecReturnRef };
+ const void *options_values[2] = { 0, kCFBooleanTrue };
+ int32_t err = MZ_SIGN_ERROR;
+
+
+ if (message == NULL || cert_data == NULL || signature == NULL || signature_size == NULL)
+ return MZ_PARAM_ERROR;
+
+ *signature = NULL;
+ *signature_size = 0;
+
+ password_ref = CFStringCreateWithCString(0, cert_pwd, kCFStringEncodingUTF8);
+ options_values[0] = password_ref;
+
+ options_dict = CFDictionaryCreate(0, options_key, options_values, 2, 0, 0);
+ if (options_dict)
+ pkcs12_data = CFDataCreate(0, cert_data, cert_data_size);
+ if (pkcs12_data)
+ status = SecPKCS12Import(pkcs12_data, options_dict, &items);
+ if (status == noErr)
+ identity_trust = CFArrayGetValueAtIndex(items, 0);
+ if (identity_trust)
+ identity = (SecIdentityRef)CFDictionaryGetValue(identity_trust, kSecImportItemIdentity);
+ if (identity)
+ trust = (SecTrustRef)CFDictionaryGetValue(identity_trust, kSecImportItemTrust);
+ if (trust) {
+ status = CMSEncodeContent(identity, NULL, NULL, FALSE, 0, message, message_size, &signature_out);
+
+ if (status == errSecSuccess) {
+ *signature_size = CFDataGetLength(signature_out);
+ *signature = (uint8_t *)MZ_ALLOC(*signature_size);
+
+ memcpy(*signature, CFDataGetBytePtr(signature_out), *signature_size);
+
+ err = MZ_OK;
+ }
+ }
+
+ if (signature_out)
+ CFRelease(signature_out);
+ if (items)
+ CFRelease(items);
+ if (pkcs12_data)
+ CFRelease(pkcs12_data);
+ if (options_dict)
+ CFRelease(options_dict);
+ if (password_ref)
+ CFRelease(password_ref);
+
+ return err;
+}
+
+int32_t mz_crypt_sign_verify(uint8_t *message, int32_t message_size, uint8_t *signature, int32_t signature_size) {
+ CMSDecoderRef decoder = NULL;
+ CMSSignerStatus signer_status = 0;
+ CFDataRef message_out = NULL;
+ SecPolicyRef trust_policy = NULL;
+ OSStatus status = noErr;
+ OSStatus verify_status = noErr;
+ size_t signer_count = 0;
+ size_t i = 0;
+ int32_t err = MZ_SIGN_ERROR;
+
+ if (message == NULL || signature == NULL)
+ return MZ_PARAM_ERROR;
+
+ status = CMSDecoderCreate(&decoder);
+ if (status == errSecSuccess)
+ status = CMSDecoderUpdateMessage(decoder, signature, signature_size);
+ if (status == errSecSuccess)
+ status = CMSDecoderFinalizeMessage(decoder);
+ if (status == errSecSuccess)
+ trust_policy = SecPolicyCreateBasicX509();
+
+ if (status == errSecSuccess && trust_policy) {
+ CMSDecoderGetNumSigners(decoder, &signer_count);
+ if (signer_count > 0)
+ err = MZ_OK;
+ for (i = 0; i < signer_count; i += 1) {
+ status = CMSDecoderCopySignerStatus(decoder, i, trust_policy, TRUE, &signer_status, NULL, &verify_status);
+ if (status != errSecSuccess || verify_status != 0 || signer_status != kCMSSignerValid) {
+ err = MZ_SIGN_ERROR;
+ break;
+ }
+ }
+ }
+
+ if (err == MZ_OK) {
+ status = CMSDecoderCopyContent(decoder, &message_out);
+ if ((status != errSecSuccess) ||
+ (CFDataGetLength(message_out) != message_size) ||
+ (memcmp(message, CFDataGetBytePtr(message_out), message_size) != 0))
+ err = MZ_SIGN_ERROR;
+ }
+
+ if (trust_policy)
+ CFRelease(trust_policy);
+ if (decoder)
+ CFRelease(decoder);
+
+ return err;
+}
+
+#endif
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_os.c b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_os.c
new file mode 100644
index 0000000..f96befe
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_os.c
@@ -0,0 +1,354 @@
+/* mz_os.c -- System functions
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+ Copyright (C) 1998-2010 Gilles Vollant
+ https://www.winimage.com/zLibDll/minizip.html
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#include "mz.h"
+#include "mz_crypt.h"
+#include "mz_os.h"
+#include "mz_strm.h"
+#include "mz_strm_os.h"
+
+#include /* tolower */
+
+/***************************************************************************/
+
+int32_t mz_path_combine(char *path, const char *join, int32_t max_path) {
+ int32_t path_len = 0;
+
+ if (path == NULL || join == NULL || max_path == 0)
+ return MZ_PARAM_ERROR;
+
+ path_len = (int32_t)strlen(path);
+
+ if (path_len == 0) {
+ strncpy(path, join, max_path - 1);
+ path[max_path - 1] = 0;
+ } else {
+ mz_path_append_slash(path, max_path, MZ_PATH_SLASH_PLATFORM);
+ strncat(path, join, max_path - path_len);
+ }
+
+ return MZ_OK;
+}
+
+int32_t mz_path_append_slash(char *path, int32_t max_path, char slash) {
+ int32_t path_len = (int32_t)strlen(path);
+ if ((path_len + 2) >= max_path)
+ return MZ_BUF_ERROR;
+ if (path[path_len - 1] != '\\' && path[path_len - 1] != '/') {
+ path[path_len] = slash;
+ path[path_len + 1] = 0;
+ }
+ return MZ_OK;
+}
+
+int32_t mz_path_remove_slash(char *path) {
+ int32_t path_len = (int32_t)strlen(path);
+ while (path_len > 0) {
+ if (path[path_len - 1] == '\\' || path[path_len - 1] == '/')
+ path[path_len - 1] = 0;
+ else
+ break;
+
+ path_len -= 1;
+ }
+ return MZ_OK;
+}
+
+int32_t mz_path_has_slash(const char *path) {
+ int32_t path_len = (int32_t)strlen(path);
+ if (path[path_len - 1] != '\\' && path[path_len - 1] != '/')
+ return MZ_EXIST_ERROR;
+ return MZ_OK;
+}
+
+int32_t mz_path_convert_slashes(char *path, char slash) {
+ int32_t i = 0;
+
+ for (i = 0; i < (int32_t)strlen(path); i += 1) {
+ if (path[i] == '\\' || path[i] == '/')
+ path[i] = slash;
+ }
+ return MZ_OK;
+}
+
+int32_t mz_path_compare_wc(const char *path, const char *wildcard, uint8_t ignore_case) {
+ while (*path != 0) {
+ switch (*wildcard) {
+ case '*':
+
+ if (*(wildcard + 1) == 0)
+ return MZ_OK;
+
+ while (*path != 0) {
+ if (mz_path_compare_wc(path, (wildcard + 1), ignore_case) == MZ_OK)
+ return MZ_OK;
+
+ path += 1;
+ }
+
+ return MZ_EXIST_ERROR;
+
+ default:
+ /* Ignore differences in path slashes on platforms */
+ if ((*path == '\\' && *wildcard == '/') || (*path == '/' && *wildcard == '\\'))
+ break;
+
+ if (ignore_case) {
+ if (tolower(*path) != tolower(*wildcard))
+ return MZ_EXIST_ERROR;
+ } else {
+ if (*path != *wildcard)
+ return MZ_EXIST_ERROR;
+ }
+
+ break;
+ }
+
+ path += 1;
+ wildcard += 1;
+ }
+
+ if ((*wildcard != 0) && (*wildcard != '*'))
+ return MZ_EXIST_ERROR;
+
+ return MZ_OK;
+}
+
+int32_t mz_path_resolve(const char *path, char *output, int32_t max_output) {
+ const char *source = path;
+ const char *check = output;
+ char *target = output;
+
+
+ if (max_output <= 0)
+ return MZ_PARAM_ERROR;
+
+ while (*source != 0 && max_output > 1) {
+ check = source;
+ if ((*check == '\\') || (*check == '/'))
+ check += 1;
+
+ if ((source == path) || (target == output) || (check != source)) {
+ /* Skip double paths */
+ if ((*check == '\\') || (*check == '/')) {
+ source += 1;
+ continue;
+ }
+ if (*check == '.') {
+ check += 1;
+
+ /* Remove . if at end of string and not at the beginning */
+ if ((*check == 0) && (source != path && target != output)) {
+ /* Copy last slash */
+ *target = *source;
+ target += 1;
+ max_output -= 1;
+ source += (check - source);
+ continue;
+ }
+ /* Remove . if not at end of string */
+ else if ((*check == '\\') || (*check == '/')) {
+ source += (check - source);
+ /* Skip slash if at beginning of string */
+ if (target == output && *source != 0)
+ source += 1;
+ continue;
+ }
+ /* Go to parent directory .. */
+ else if (*check == '.') {
+ check += 1;
+ if ((*check == 0) || (*check == '\\' || *check == '/')) {
+ source += (check - source);
+
+ /* Search backwards for previous slash */
+ if (target != output) {
+ target -= 1;
+ do {
+ if ((*target == '\\') || (*target == '/'))
+ break;
+
+ target -= 1;
+ max_output += 1;
+ } while (target > output);
+ }
+
+ if ((target == output) && (*source != 0))
+ source += 1;
+ if ((*target == '\\' || *target == '/') && (*source == 0))
+ target += 1;
+
+ *target = 0;
+ continue;
+ }
+ }
+ }
+ }
+
+ *target = *source;
+
+ source += 1;
+ target += 1;
+ max_output -= 1;
+ }
+
+ *target = 0;
+
+ if (*path == 0)
+ return MZ_INTERNAL_ERROR;
+
+ return MZ_OK;
+}
+
+int32_t mz_path_remove_filename(char *path) {
+ char *path_ptr = NULL;
+
+ if (path == NULL)
+ return MZ_PARAM_ERROR;
+
+ path_ptr = path + strlen(path) - 1;
+
+ while (path_ptr > path) {
+ if ((*path_ptr == '/') || (*path_ptr == '\\')) {
+ *path_ptr = 0;
+ break;
+ }
+
+ path_ptr -= 1;
+ }
+
+ if (path_ptr == path)
+ *path_ptr = 0;
+
+ return MZ_OK;
+}
+
+int32_t mz_path_remove_extension(char *path) {
+ char *path_ptr = NULL;
+
+ if (path == NULL)
+ return MZ_PARAM_ERROR;
+
+ path_ptr = path + strlen(path) - 1;
+
+ while (path_ptr > path) {
+ if ((*path_ptr == '/') || (*path_ptr == '\\'))
+ break;
+ if (*path_ptr == '.') {
+ *path_ptr = 0;
+ break;
+ }
+
+ path_ptr -= 1;
+ }
+
+ if (path_ptr == path)
+ *path_ptr = 0;
+
+ return MZ_OK;
+}
+
+int32_t mz_path_get_filename(const char *path, const char **filename) {
+ const char *match = NULL;
+
+ if (path == NULL || filename == NULL)
+ return MZ_PARAM_ERROR;
+
+ *filename = NULL;
+
+ for (match = path; *match != 0; match += 1) {
+ if ((*match == '\\') || (*match == '/'))
+ *filename = match + 1;
+ }
+
+ if (*filename == NULL)
+ return MZ_EXIST_ERROR;
+
+ return MZ_OK;
+}
+
+int32_t mz_dir_make(const char *path) {
+ int32_t err = MZ_OK;
+ int16_t len = 0;
+ char *current_dir = NULL;
+ char *match = NULL;
+ char hold = 0;
+
+
+ len = (int16_t)strlen(path);
+ if (len <= 0)
+ return 0;
+
+ current_dir = (char *)MZ_ALLOC((uint16_t)len + 1);
+ if (current_dir == NULL)
+ return MZ_MEM_ERROR;
+
+ strcpy(current_dir, path);
+ mz_path_remove_slash(current_dir);
+
+ err = mz_os_make_dir(current_dir);
+ if (err != MZ_OK) {
+ match = current_dir + 1;
+ while (1) {
+ while (*match != 0 && *match != '\\' && *match != '/')
+ match += 1;
+ hold = *match;
+ *match = 0;
+
+ err = mz_os_make_dir(current_dir);
+ if (err != MZ_OK)
+ break;
+ if (hold == 0)
+ break;
+
+ *match = hold;
+ match += 1;
+ }
+ }
+
+ MZ_FREE(current_dir);
+ return err;
+}
+
+int32_t mz_file_get_crc(const char *path, uint32_t *result_crc) {
+ void *stream = NULL;
+ uint32_t crc32 = 0;
+ int32_t read = 0;
+ int32_t err = MZ_OK;
+ uint8_t buf[16384];
+
+ mz_stream_os_create(&stream);
+
+ err = mz_stream_os_open(stream, path, MZ_OPEN_MODE_READ);
+
+ if (err == MZ_OK) {
+ do {
+ read = mz_stream_os_read(stream, buf, sizeof(buf));
+
+ if (read < 0) {
+ err = read;
+ break;
+ }
+
+ crc32 = mz_crypt_crc32_update(crc32, buf, read);
+ } while ((err == MZ_OK) && (read > 0));
+
+ mz_stream_os_close(stream);
+ }
+
+ *result_crc = crc32;
+
+ mz_stream_os_delete(&stream);
+
+ return err;
+}
+
+/***************************************************************************/
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_os.h b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_os.h
new file mode 100644
index 0000000..b3e2a58
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_os.h
@@ -0,0 +1,175 @@
+/* mz_os.h -- System functions
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#ifndef MZ_OS_H
+#define MZ_OS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************/
+
+#if defined(__APPLE__)
+# define MZ_VERSION_MADEBY_HOST_SYSTEM (MZ_HOST_SYSTEM_OSX_DARWIN)
+#elif defined(__riscos__)
+# define MZ_VERSION_MADEBY_HOST_SYSTEM (MZ_HOST_SYSTEM_RISCOS)
+#elif defined(_WIN32)
+# define MZ_VERSION_MADEBY_HOST_SYSTEM (MZ_HOST_SYSTEM_WINDOWS_NTFS)
+#else
+# define MZ_VERSION_MADEBY_HOST_SYSTEM (MZ_HOST_SYSTEM_UNIX)
+#endif
+
+#if defined(HAVE_LZMA) || defined(HAVE_LIBCOMP)
+# define MZ_VERSION_MADEBY_ZIP_VERSION (63)
+#elif defined(HAVE_WZAES)
+# define MZ_VERSION_MADEBY_ZIP_VERSION (51)
+#elif defined(HAVE_BZIP2)
+# define MZ_VERSION_MADEBY_ZIP_VERSION (46)
+#else
+# define MZ_VERSION_MADEBY_ZIP_VERSION (45)
+#endif
+
+#define MZ_VERSION_MADEBY ((MZ_VERSION_MADEBY_HOST_SYSTEM << 8) | \
+ (MZ_VERSION_MADEBY_ZIP_VERSION))
+
+#define MZ_PATH_SLASH_UNIX ('/')
+#if defined(_WIN32)
+# define MZ_PATH_SLASH_PLATFORM ('\\')
+#else
+# define MZ_PATH_SLASH_PLATFORM (MZ_PATH_SLASH_UNIX)
+#endif
+
+/***************************************************************************/
+
+#if defined(_WIN32)
+struct dirent {
+ char d_name[256];
+};
+typedef void* DIR;
+#else
+#include
+#endif
+
+/***************************************************************************/
+/* Shared functions */
+
+int32_t mz_path_combine(char *path, const char *join, int32_t max_path);
+/* Combines two paths */
+
+int32_t mz_path_append_slash(char *path, int32_t max_path, char slash);
+/* Appends a path slash on to the end of the path */
+
+int32_t mz_path_remove_slash(char *path);
+/* Removes a path slash from the end of the path */
+
+int32_t mz_path_has_slash(const char *path);
+/* Returns whether or not the path ends with slash */
+
+int32_t mz_path_convert_slashes(char *path, char slash);
+/* Converts the slashes in a path */
+
+int32_t mz_path_compare_wc(const char *path, const char *wildcard, uint8_t ignore_case);
+/* Compare two paths with wildcard */
+
+int32_t mz_path_resolve(const char *path, char *target, int32_t max_target);
+/* Resolves path */
+
+int32_t mz_path_remove_filename(char *path);
+/* Remove the filename from a path */
+
+int32_t mz_path_remove_extension(char *path);
+/* Remove the extension from a path */
+
+int32_t mz_path_get_filename(const char *path, const char **filename);
+/* Get the filename from a path */
+
+int32_t mz_dir_make(const char *path);
+/* Creates a directory recursively */
+
+int32_t mz_file_get_crc(const char *path, uint32_t *result_crc);
+/* Gets the crc32 hash of a file */
+
+/***************************************************************************/
+/* Platform specific functions */
+
+wchar_t *mz_os_unicode_string_create(const char *string, int32_t encoding);
+/* Create unicode string from a utf8 string */
+
+void mz_os_unicode_string_delete(wchar_t **string);
+/* Delete a unicode string that was created */
+
+uint8_t *mz_os_utf8_string_create(const char *string, int32_t encoding);
+/* Create a utf8 string from a string with another encoding */
+
+void mz_os_utf8_string_delete(uint8_t **string);
+/* Delete a utf8 string that was created */
+
+int32_t mz_os_rand(uint8_t *buf, int32_t size);
+/* Random number generator (not cryptographically secure) */
+
+int32_t mz_os_rename(const char *source_path, const char *target_path);
+/* Rename a file */
+
+int32_t mz_os_unlink(const char *path);
+/* Delete an existing file */
+
+int32_t mz_os_file_exists(const char *path);
+/* Check to see if a file exists */
+
+int64_t mz_os_get_file_size(const char *path);
+/* Gets the length of a file */
+
+int32_t mz_os_get_file_date(const char *path, time_t *modified_date, time_t *accessed_date, time_t *creation_date);
+/* Gets a file's modified, access, and creation dates if supported */
+
+int32_t mz_os_set_file_date(const char *path, time_t modified_date, time_t accessed_date, time_t creation_date);
+/* Sets a file's modified, access, and creation dates if supported */
+
+int32_t mz_os_get_file_attribs(const char *path, uint32_t *attributes);
+/* Gets a file's attributes */
+
+int32_t mz_os_set_file_attribs(const char *path, uint32_t attributes);
+/* Sets a file's attributes */
+
+int32_t mz_os_make_dir(const char *path);
+/* Recursively creates a directory */
+
+DIR* mz_os_open_dir(const char *path);
+/* Opens a directory for listing */
+struct
+dirent* mz_os_read_dir(DIR *dir);
+/* Reads a directory listing entry */
+
+int32_t mz_os_close_dir(DIR *dir);
+/* Closes a directory that has been opened for listing */
+
+int32_t mz_os_is_dir(const char *path);
+/* Checks to see if path is a directory */
+
+int32_t mz_os_is_symlink(const char *path);
+/* Checks to see if path is a symbolic link */
+
+int32_t mz_os_make_symlink(const char *path, const char *target_path);
+/* Creates a symbolic link pointing to a target */
+
+int32_t mz_os_read_symlink(const char *path, char *target_path, int32_t max_target_path);
+/* Gets the target path for a symbolic link */
+
+uint64_t mz_os_ms_time(void);
+/* Gets the time in milliseconds */
+
+/***************************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_os_posix.c b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_os_posix.c
new file mode 100644
index 0000000..576943d
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_os_posix.c
@@ -0,0 +1,367 @@
+/* mz_os_posix.c -- System functions for posix
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#include "mz.h"
+#include "mz_strm.h"
+#include "mz_os.h"
+
+#include /* rename */
+#include
+#if defined(HAVE_ICONV)
+#include
+#endif
+
+#include
+#include
+
+#ifndef _WIN32
+# include
+# include
+#endif
+#if defined(__APPLE__)
+# include
+# include
+#endif
+
+#if defined(HAVE_GETRANDOM)
+# include
+#endif
+#if defined(HAVE_LIBBSD)
+# include
+# ifndef __u_char_defined
+ typedef unsigned char u_char;
+# endif
+# include /* arc4random_buf */
+#endif
+
+/***************************************************************************/
+
+#if defined(HAVE_ICONV)
+uint8_t *mz_os_utf8_string_create(const char *string, int32_t encoding) {
+ iconv_t cd;
+ const char *from_encoding = NULL;
+ size_t result = 0;
+ size_t string_length = 0;
+ size_t string_utf8_size = 0;
+ uint8_t *string_utf8 = NULL;
+ uint8_t *string_utf8_ptr = NULL;
+
+ if (string == NULL)
+ return NULL;
+
+ if (encoding == MZ_ENCODING_CODEPAGE_437)
+ from_encoding = "CP437";
+ else if (encoding == MZ_ENCODING_CODEPAGE_932)
+ from_encoding = "CP932";
+ else if (encoding == MZ_ENCODING_CODEPAGE_936)
+ from_encoding = "CP936";
+ else if (encoding == MZ_ENCODING_CODEPAGE_950)
+ from_encoding = "CP950";
+ else if (encoding == MZ_ENCODING_UTF8)
+ from_encoding = "UTF-8";
+ else
+ return NULL;
+
+ cd = iconv_open("UTF-8", from_encoding);
+ if (cd == (iconv_t)-1)
+ return NULL;
+
+ string_length = strlen(string);
+ string_utf8_size = string_length * 2;
+ string_utf8 = (uint8_t *)MZ_ALLOC((int32_t)(string_utf8_size + 1));
+ string_utf8_ptr = string_utf8;
+
+ if (string_utf8) {
+ memset(string_utf8, 0, string_utf8_size + 1);
+
+ result = iconv(cd, (char **)&string, &string_length,
+ (char **)&string_utf8_ptr, &string_utf8_size);
+ }
+
+ iconv_close(cd);
+
+ if (result == (size_t)-1) {
+ MZ_FREE(string_utf8);
+ string_utf8 = NULL;
+ }
+
+ return string_utf8;
+}
+#else
+uint8_t *mz_os_utf8_string_create(const char *string, int32_t encoding) {
+ size_t string_length = 0;
+ uint8_t *string_copy = NULL;
+
+ string_length = strlen(string);
+ string_copy = (uint8_t *)MZ_ALLOC((int32_t)(string_length + 1));
+ strncpy((char *)string_copy, string, string_length);
+ string_copy[string_length] = 0;
+
+ return string_copy;
+}
+#endif
+
+void mz_os_utf8_string_delete(uint8_t **string) {
+ if (string != NULL) {
+ MZ_FREE(*string);
+ *string = NULL;
+ }
+}
+
+/***************************************************************************/
+
+#if defined(HAVE_ARC4RANDOM_BUF)
+int32_t mz_os_rand(uint8_t *buf, int32_t size) {
+ if (size < 0)
+ return 0;
+ arc4random_buf(buf, (uint32_t)size);
+ return size;
+}
+#elif defined(HAVE_ARC4RANDOM)
+int32_t mz_os_rand(uint8_t *buf, int32_t size) {
+ int32_t left = size;
+ for (; left > 2; left -= 3, buf += 3) {
+ uint32_t val = arc4random();
+
+ buf[0] = (val) & 0xFF;
+ buf[1] = (val >> 8) & 0xFF;
+ buf[2] = (val >> 16) & 0xFF;
+ }
+ for (; left > 0; left--, buf++) {
+ *buf = arc4random() & 0xFF;
+ }
+ return size - left;
+}
+#elif defined(HAVE_GETRANDOM)
+int32_t mz_os_rand(uint8_t *buf, int32_t size) {
+ int32_t left = size;
+ int32_t written = 0;
+
+ while (left > 0) {
+ written = getrandom(buf, left, 0);
+ if (written < 0)
+ return MZ_INTERNAL_ERROR;
+
+ buf += written;
+ left -= written;
+ }
+ return size - left;
+}
+#else
+int32_t mz_os_rand(uint8_t *buf, int32_t size) {
+ static unsigned calls = 0;
+ int32_t i = 0;
+
+ /* Ensure different random header each time */
+ if (++calls == 1) {
+ #define PI_SEED 3141592654UL
+ srand((unsigned)(time(NULL) ^ PI_SEED));
+ }
+
+ while (i < size)
+ buf[i++] = (rand() >> 7) & 0xff;
+
+ return size;
+}
+#endif
+
+int32_t mz_os_rename(const char *source_path, const char *target_path) {
+ if (rename(source_path, target_path) == -1)
+ return MZ_EXIST_ERROR;
+
+ return MZ_OK;
+}
+
+int32_t mz_os_unlink(const char *path) {
+ if (unlink(path) == -1)
+ return MZ_EXIST_ERROR;
+
+ return MZ_OK;
+}
+
+int32_t mz_os_file_exists(const char *path) {
+ struct stat path_stat;
+
+ memset(&path_stat, 0, sizeof(path_stat));
+ if (stat(path, &path_stat) == 0)
+ return MZ_OK;
+ return MZ_EXIST_ERROR;
+}
+
+int64_t mz_os_get_file_size(const char *path) {
+ struct stat path_stat;
+
+ memset(&path_stat, 0, sizeof(path_stat));
+ if (stat(path, &path_stat) == 0) {
+ /* Stat returns size taken up by directory entry, so return 0 */
+ if (S_ISDIR(path_stat.st_mode))
+ return 0;
+
+ return path_stat.st_size;
+ }
+
+ return 0;
+}
+
+int32_t mz_os_get_file_date(const char *path, time_t *modified_date, time_t *accessed_date, time_t *creation_date) {
+ struct stat path_stat;
+ char *name = NULL;
+ size_t len = 0;
+ int32_t err = MZ_INTERNAL_ERROR;
+
+ memset(&path_stat, 0, sizeof(path_stat));
+
+ if (strcmp(path, "-") != 0) {
+ /* Not all systems allow stat'ing a file with / appended */
+ len = strlen(path);
+ name = (char *)malloc(len + 1);
+ strncpy(name, path, len + 1);
+ mz_path_remove_slash(name);
+
+ if (stat(name, &path_stat) == 0) {
+ if (modified_date != NULL)
+ *modified_date = path_stat.st_mtime;
+ if (accessed_date != NULL)
+ *accessed_date = path_stat.st_atime;
+ /* Creation date not supported */
+ if (creation_date != NULL)
+ *creation_date = 0;
+
+ err = MZ_OK;
+ }
+
+ free(name);
+ }
+
+ return err;
+}
+
+int32_t mz_os_set_file_date(const char *path, time_t modified_date, time_t accessed_date, time_t creation_date) {
+ struct utimbuf ut;
+
+ ut.actime = accessed_date;
+ ut.modtime = modified_date;
+
+ /* Creation date not supported */
+ MZ_UNUSED(creation_date);
+
+ if (utime(path, &ut) != 0)
+ return MZ_INTERNAL_ERROR;
+
+ return MZ_OK;
+}
+
+int32_t mz_os_get_file_attribs(const char *path, uint32_t *attributes) {
+ struct stat path_stat;
+ int32_t err = MZ_OK;
+
+ memset(&path_stat, 0, sizeof(path_stat));
+ if (lstat(path, &path_stat) == -1)
+ err = MZ_INTERNAL_ERROR;
+ *attributes = path_stat.st_mode;
+ return err;
+}
+
+int32_t mz_os_set_file_attribs(const char *path, uint32_t attributes) {
+ int32_t err = MZ_OK;
+
+ if (chmod(path, (mode_t)attributes) == -1)
+ err = MZ_INTERNAL_ERROR;
+
+ return err;
+}
+
+int32_t mz_os_make_dir(const char *path) {
+ int32_t err = 0;
+
+ err = mkdir(path, 0755);
+
+ if (err != 0 && errno != EEXIST)
+ return MZ_INTERNAL_ERROR;
+
+ return MZ_OK;
+}
+
+DIR* mz_os_open_dir(const char *path) {
+ return opendir(path);
+}
+
+struct dirent* mz_os_read_dir(DIR *dir) {
+ if (dir == NULL)
+ return NULL;
+ return readdir(dir);
+}
+
+int32_t mz_os_close_dir(DIR *dir) {
+ if (dir == NULL)
+ return MZ_PARAM_ERROR;
+ if (closedir(dir) == -1)
+ return MZ_INTERNAL_ERROR;
+ return MZ_OK;
+}
+
+int32_t mz_os_is_dir(const char *path) {
+ struct stat path_stat;
+
+ memset(&path_stat, 0, sizeof(path_stat));
+ stat(path, &path_stat);
+ if (S_ISDIR(path_stat.st_mode))
+ return MZ_OK;
+
+ return MZ_EXIST_ERROR;
+}
+
+int32_t mz_os_is_symlink(const char *path) {
+ struct stat path_stat;
+
+ memset(&path_stat, 0, sizeof(path_stat));
+ lstat(path, &path_stat);
+ if (S_ISLNK(path_stat.st_mode))
+ return MZ_OK;
+
+ return MZ_EXIST_ERROR;
+}
+
+int32_t mz_os_make_symlink(const char *path, const char *target_path) {
+ if (symlink(target_path, path) != 0)
+ return MZ_INTERNAL_ERROR;
+ return MZ_OK;
+}
+
+int32_t mz_os_read_symlink(const char *path, char *target_path, int32_t max_target_path) {
+ size_t length = 0;
+
+ length = (size_t)readlink(path, target_path, max_target_path - 1);
+ if (length == (size_t)-1)
+ return MZ_EXIST_ERROR;
+
+ target_path[length] = 0;
+ return MZ_OK;
+}
+
+uint64_t mz_os_ms_time(void) {
+ struct timespec ts;
+
+#if defined(__APPLE__)
+ clock_serv_t cclock;
+ mach_timespec_t mts;
+
+ host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
+ clock_get_time(cclock, &mts);
+ mach_port_deallocate(mach_task_self(), cclock);
+
+ ts.tv_sec = mts.tv_sec;
+ ts.tv_nsec = mts.tv_nsec;
+#else
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+#endif
+
+ return ((uint64_t)ts.tv_sec * 1000) + ((uint64_t)ts.tv_nsec / 1000000);
+}
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm.c b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm.c
new file mode 100644
index 0000000..da7d587
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm.c
@@ -0,0 +1,560 @@
+/* mz_strm.c -- Stream interface
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#include "mz.h"
+#include "mz_strm.h"
+
+/***************************************************************************/
+
+#define MZ_STREAM_FIND_SIZE (1024)
+
+/***************************************************************************/
+
+int32_t mz_stream_open(void *stream, const char *path, int32_t mode) {
+ mz_stream *strm = (mz_stream *)stream;
+ if (strm == NULL || strm->vtbl == NULL || strm->vtbl->open == NULL)
+ return MZ_STREAM_ERROR;
+ return strm->vtbl->open(strm, path, mode);
+}
+
+int32_t mz_stream_is_open(void *stream) {
+ mz_stream *strm = (mz_stream *)stream;
+ if (strm == NULL || strm->vtbl == NULL || strm->vtbl->is_open == NULL)
+ return MZ_STREAM_ERROR;
+ return strm->vtbl->is_open(strm);
+}
+
+int32_t mz_stream_read(void *stream, void *buf, int32_t size) {
+ mz_stream *strm = (mz_stream *)stream;
+ if (strm == NULL || strm->vtbl == NULL || strm->vtbl->read == NULL)
+ return MZ_PARAM_ERROR;
+ if (mz_stream_is_open(stream) != MZ_OK)
+ return MZ_STREAM_ERROR;
+ return strm->vtbl->read(strm, buf, size);
+}
+
+static int32_t mz_stream_read_value(void *stream, uint64_t *value, int32_t len) {
+ uint8_t buf[8];
+ int32_t n = 0;
+ int32_t i = 0;
+
+ *value = 0;
+ if (mz_stream_read(stream, buf, len) == len) {
+ for (n = 0; n < len; n += 1, i += 8)
+ *value += ((uint64_t)buf[n]) << i;
+ } else if (mz_stream_error(stream))
+ return MZ_STREAM_ERROR;
+ else
+ return MZ_END_OF_STREAM;
+
+ return MZ_OK;
+}
+
+int32_t mz_stream_read_uint8(void *stream, uint8_t *value) {
+ int32_t err = MZ_OK;
+ uint64_t value64 = 0;
+
+ *value = 0;
+ err = mz_stream_read_value(stream, &value64, sizeof(uint8_t));
+ if (err == MZ_OK)
+ *value = (uint8_t)value64;
+ return err;
+}
+
+int32_t mz_stream_read_uint16(void *stream, uint16_t *value) {
+ int32_t err = MZ_OK;
+ uint64_t value64 = 0;
+
+ *value = 0;
+ err = mz_stream_read_value(stream, &value64, sizeof(uint16_t));
+ if (err == MZ_OK)
+ *value = (uint16_t)value64;
+ return err;
+}
+
+int32_t mz_stream_read_uint32(void *stream, uint32_t *value) {
+ int32_t err = MZ_OK;
+ uint64_t value64 = 0;
+
+ *value = 0;
+ err = mz_stream_read_value(stream, &value64, sizeof(uint32_t));
+ if (err == MZ_OK)
+ *value = (uint32_t)value64;
+ return err;
+}
+
+int32_t mz_stream_read_int64(void *stream, int64_t *value) {
+ return mz_stream_read_value(stream, (uint64_t *)value, sizeof(uint64_t));
+}
+
+int32_t mz_stream_read_uint64(void *stream, uint64_t *value) {
+ return mz_stream_read_value(stream, value, sizeof(uint64_t));
+}
+
+int32_t mz_stream_write(void *stream, const void *buf, int32_t size) {
+ mz_stream *strm = (mz_stream *)stream;
+ if (size == 0)
+ return size;
+ if (strm == NULL || strm->vtbl == NULL || strm->vtbl->write == NULL)
+ return MZ_PARAM_ERROR;
+ if (mz_stream_is_open(stream) != MZ_OK)
+ return MZ_STREAM_ERROR;
+ return strm->vtbl->write(strm, buf, size);
+}
+
+static int32_t mz_stream_write_value(void *stream, uint64_t value, int32_t len) {
+ uint8_t buf[8];
+ int32_t n = 0;
+
+ for (n = 0; n < len; n += 1) {
+ buf[n] = (uint8_t)(value & 0xff);
+ value >>= 8;
+ }
+
+ if (value != 0) {
+ /* Data overflow - hack for ZIP64 (X Roche) */
+ for (n = 0; n < len; n += 1)
+ buf[n] = 0xff;
+ }
+
+ if (mz_stream_write(stream, buf, len) != len)
+ return MZ_STREAM_ERROR;
+
+ return MZ_OK;
+}
+
+int32_t mz_stream_write_uint8(void *stream, uint8_t value) {
+ return mz_stream_write_value(stream, value, sizeof(uint8_t));
+}
+
+int32_t mz_stream_write_uint16(void *stream, uint16_t value) {
+ return mz_stream_write_value(stream, value, sizeof(uint16_t));
+}
+
+int32_t mz_stream_write_uint32(void *stream, uint32_t value) {
+ return mz_stream_write_value(stream, value, sizeof(uint32_t));
+}
+
+int32_t mz_stream_write_int64(void *stream, int64_t value) {
+ return mz_stream_write_value(stream, (uint64_t)value, sizeof(uint64_t));
+}
+
+int32_t mz_stream_write_uint64(void *stream, uint64_t value) {
+ return mz_stream_write_value(stream, value, sizeof(uint64_t));
+}
+
+int32_t mz_stream_copy(void *target, void *source, int32_t len) {
+ return mz_stream_copy_stream(target, NULL, source, NULL, len);
+}
+
+int32_t mz_stream_copy_to_end(void *target, void *source) {
+ return mz_stream_copy_stream_to_end(target, NULL, source, NULL);
+}
+
+int32_t mz_stream_copy_stream(void *target, mz_stream_write_cb write_cb, void *source,
+ mz_stream_read_cb read_cb, int32_t len) {
+ uint8_t buf[16384];
+ int32_t bytes_to_copy = 0;
+ int32_t read = 0;
+ int32_t written = 0;
+
+ if (write_cb == NULL)
+ write_cb = mz_stream_write;
+ if (read_cb == NULL)
+ read_cb = mz_stream_read;
+
+ while (len > 0) {
+ bytes_to_copy = len;
+ if (bytes_to_copy > (int32_t)sizeof(buf))
+ bytes_to_copy = sizeof(buf);
+ read = read_cb(source, buf, bytes_to_copy);
+ if (read <= 0)
+ return MZ_STREAM_ERROR;
+ written = write_cb(target, buf, read);
+ if (written != read)
+ return MZ_STREAM_ERROR;
+ len -= read;
+ }
+
+ return MZ_OK;
+}
+
+int32_t mz_stream_copy_stream_to_end(void *target, mz_stream_write_cb write_cb, void *source,
+ mz_stream_read_cb read_cb) {
+ uint8_t buf[16384];
+ int32_t read = 0;
+ int32_t written = 0;
+
+ if (write_cb == NULL)
+ write_cb = mz_stream_write;
+ if (read_cb == NULL)
+ read_cb = mz_stream_read;
+
+ read = read_cb(source, buf, sizeof(buf));
+ while (read > 0) {
+ written = write_cb(target, buf, read);
+ if (written != read)
+ return MZ_STREAM_ERROR;
+ read = read_cb(source, buf, sizeof(buf));
+ }
+
+ if (read < 0)
+ return MZ_STREAM_ERROR;
+
+ return MZ_OK;
+}
+
+int64_t mz_stream_tell(void *stream) {
+ mz_stream *strm = (mz_stream *)stream;
+ if (strm == NULL || strm->vtbl == NULL || strm->vtbl->tell == NULL)
+ return MZ_PARAM_ERROR;
+ if (mz_stream_is_open(stream) != MZ_OK)
+ return MZ_STREAM_ERROR;
+ return strm->vtbl->tell(strm);
+}
+
+int32_t mz_stream_seek(void *stream, int64_t offset, int32_t origin) {
+ mz_stream *strm = (mz_stream *)stream;
+ if (strm == NULL || strm->vtbl == NULL || strm->vtbl->seek == NULL)
+ return MZ_PARAM_ERROR;
+ if (mz_stream_is_open(stream) != MZ_OK)
+ return MZ_STREAM_ERROR;
+ if (origin == MZ_SEEK_SET && offset < 0)
+ return MZ_SEEK_ERROR;
+ return strm->vtbl->seek(strm, offset, origin);
+}
+
+int32_t mz_stream_find(void *stream, const void *find, int32_t find_size, int64_t max_seek, int64_t *position) {
+ uint8_t buf[MZ_STREAM_FIND_SIZE];
+ int32_t buf_pos = 0;
+ int32_t read_size = sizeof(buf);
+ int32_t read = 0;
+ int64_t read_pos = 0;
+ int64_t start_pos = 0;
+ int64_t disk_pos = 0;
+ int32_t i = 0;
+ uint8_t first = 1;
+ int32_t err = MZ_OK;
+
+ if (stream == NULL || find == NULL || position == NULL)
+ return MZ_PARAM_ERROR;
+ if (find_size < 0 || find_size >= (int32_t)sizeof(buf))
+ return MZ_PARAM_ERROR;
+
+ *position = -1;
+
+ start_pos = mz_stream_tell(stream);
+
+ while (read_pos < max_seek) {
+ if (read_size > (int32_t)(max_seek - read_pos - buf_pos) && (max_seek - read_pos - buf_pos) < (int64_t)sizeof(buf))
+ read_size = (int32_t)(max_seek - read_pos - buf_pos);
+
+ read = mz_stream_read(stream, buf + buf_pos, read_size);
+ if ((read <= 0) || (read + buf_pos < find_size))
+ break;
+
+ for (i = 0; i <= read + buf_pos - find_size; i += 1) {
+ if (memcmp(&buf[i], find, find_size) != 0)
+ continue;
+
+ disk_pos = mz_stream_tell(stream);
+
+ /* Seek to position on disk where the data was found */
+ err = mz_stream_seek(stream, disk_pos - ((int64_t)read + buf_pos - i), MZ_SEEK_SET);
+ if (err != MZ_OK)
+ return MZ_EXIST_ERROR;
+
+ *position = start_pos + read_pos + i;
+ return MZ_OK;
+ }
+
+ if (first) {
+ read -= find_size;
+ read_size -= find_size;
+ buf_pos = find_size;
+ first = 0;
+ }
+
+ memmove(buf, buf + read, find_size);
+ read_pos += read;
+ }
+
+ return MZ_EXIST_ERROR;
+}
+
+int32_t mz_stream_find_reverse(void *stream, const void *find, int32_t find_size, int64_t max_seek, int64_t *position) {
+ uint8_t buf[MZ_STREAM_FIND_SIZE];
+ int32_t buf_pos = 0;
+ int32_t read_size = MZ_STREAM_FIND_SIZE;
+ int64_t read_pos = 0;
+ int32_t read = 0;
+ int64_t start_pos = 0;
+ int64_t disk_pos = 0;
+ uint8_t first = 1;
+ int32_t i = 0;
+ int32_t err = MZ_OK;
+
+ if (stream == NULL || find == NULL || position == NULL)
+ return MZ_PARAM_ERROR;
+ if (find_size < 0 || find_size >= (int32_t)sizeof(buf))
+ return MZ_PARAM_ERROR;
+
+ *position = -1;
+
+ start_pos = mz_stream_tell(stream);
+
+ while (read_pos < max_seek) {
+ if (read_size > (int32_t)(max_seek - read_pos) && (max_seek - read_pos) < (int64_t)sizeof(buf))
+ read_size = (int32_t)(max_seek - read_pos);
+
+ if (mz_stream_seek(stream, start_pos - (read_pos + read_size), MZ_SEEK_SET) != MZ_OK)
+ break;
+ read = mz_stream_read(stream, buf, read_size);
+ if ((read <= 0) || (read + buf_pos < find_size))
+ break;
+ if (read + buf_pos < MZ_STREAM_FIND_SIZE)
+ memmove(buf + MZ_STREAM_FIND_SIZE - (read + buf_pos), buf, read);
+
+ for (i = find_size; i <= (read + buf_pos); i += 1) {
+ if (memcmp(&buf[MZ_STREAM_FIND_SIZE - i], find, find_size) != 0)
+ continue;
+
+ disk_pos = mz_stream_tell(stream);
+
+ /* Seek to position on disk where the data was found */
+ err = mz_stream_seek(stream, disk_pos + buf_pos - i, MZ_SEEK_SET);
+ if (err != MZ_OK)
+ return MZ_EXIST_ERROR;
+
+ *position = start_pos - (read_pos - buf_pos + i);
+ return MZ_OK;
+ }
+
+ if (first) {
+ read -= find_size;
+ read_size -= find_size;
+ buf_pos = find_size;
+ first = 0;
+ }
+
+ if (read == 0)
+ break;
+
+ memmove(buf + read_size, buf, find_size);
+ read_pos += read;
+ }
+
+ return MZ_EXIST_ERROR;
+}
+
+int32_t mz_stream_close(void *stream) {
+ mz_stream *strm = (mz_stream *)stream;
+ if (strm == NULL || strm->vtbl == NULL || strm->vtbl->close == NULL)
+ return MZ_PARAM_ERROR;
+ if (mz_stream_is_open(stream) != MZ_OK)
+ return MZ_STREAM_ERROR;
+ return strm->vtbl->close(strm);
+}
+
+int32_t mz_stream_error(void *stream) {
+ mz_stream *strm = (mz_stream *)stream;
+ if (strm == NULL || strm->vtbl == NULL || strm->vtbl->error == NULL)
+ return MZ_PARAM_ERROR;
+ return strm->vtbl->error(strm);
+}
+
+int32_t mz_stream_set_base(void *stream, void *base) {
+ mz_stream *strm = (mz_stream *)stream;
+ strm->base = (mz_stream *)base;
+ return MZ_OK;
+}
+
+void* mz_stream_get_interface(void *stream) {
+ mz_stream *strm = (mz_stream *)stream;
+ if (strm == NULL || strm->vtbl == NULL)
+ return NULL;
+ return (void *)strm->vtbl;
+}
+
+int32_t mz_stream_get_prop_int64(void *stream, int32_t prop, int64_t *value) {
+ mz_stream *strm = (mz_stream *)stream;
+ if (strm == NULL || strm->vtbl == NULL || strm->vtbl->get_prop_int64 == NULL)
+ return MZ_PARAM_ERROR;
+ return strm->vtbl->get_prop_int64(stream, prop, value);
+}
+
+int32_t mz_stream_set_prop_int64(void *stream, int32_t prop, int64_t value) {
+ mz_stream *strm = (mz_stream *)stream;
+ if (strm == NULL || strm->vtbl == NULL || strm->vtbl->set_prop_int64 == NULL)
+ return MZ_PARAM_ERROR;
+ return strm->vtbl->set_prop_int64(stream, prop, value);
+}
+
+void *mz_stream_create(void **stream, mz_stream_vtbl *vtbl) {
+ if (stream == NULL)
+ return NULL;
+ if (vtbl == NULL || vtbl->create == NULL)
+ return NULL;
+ return vtbl->create(stream);
+}
+
+void mz_stream_delete(void **stream) {
+ mz_stream *strm = NULL;
+ if (stream == NULL)
+ return;
+ strm = (mz_stream *)*stream;
+ if (strm != NULL && strm->vtbl != NULL && strm->vtbl->destroy != NULL)
+ strm->vtbl->destroy(stream);
+ *stream = NULL;
+}
+
+/***************************************************************************/
+
+typedef struct mz_stream_raw_s {
+ mz_stream stream;
+ int64_t total_in;
+ int64_t total_out;
+ int64_t max_total_in;
+} mz_stream_raw;
+
+/***************************************************************************/
+
+int32_t mz_stream_raw_open(void *stream, const char *path, int32_t mode) {
+ MZ_UNUSED(stream);
+ MZ_UNUSED(path);
+ MZ_UNUSED(mode);
+
+ return MZ_OK;
+}
+
+int32_t mz_stream_raw_is_open(void *stream) {
+ mz_stream_raw *raw = (mz_stream_raw *)stream;
+ return mz_stream_is_open(raw->stream.base);
+}
+
+int32_t mz_stream_raw_read(void *stream, void *buf, int32_t size) {
+ mz_stream_raw *raw = (mz_stream_raw *)stream;
+ int32_t bytes_to_read = size;
+ int32_t read = 0;
+
+ if (raw->max_total_in > 0) {
+ if ((int64_t)bytes_to_read > (raw->max_total_in - raw->total_in))
+ bytes_to_read = (int32_t)(raw->max_total_in - raw->total_in);
+ }
+
+ read = mz_stream_read(raw->stream.base, buf, bytes_to_read);
+
+ if (read > 0) {
+ raw->total_in += read;
+ raw->total_out += read;
+ }
+
+ return read;
+}
+
+int32_t mz_stream_raw_write(void *stream, const void *buf, int32_t size) {
+ mz_stream_raw *raw = (mz_stream_raw *)stream;
+ int32_t written = 0;
+
+ written = mz_stream_write(raw->stream.base, buf, size);
+
+ if (written > 0) {
+ raw->total_out += written;
+ raw->total_in += written;
+ }
+
+ return written;
+}
+
+int64_t mz_stream_raw_tell(void *stream) {
+ mz_stream_raw *raw = (mz_stream_raw *)stream;
+ return mz_stream_tell(raw->stream.base);
+}
+
+int32_t mz_stream_raw_seek(void *stream, int64_t offset, int32_t origin) {
+ mz_stream_raw *raw = (mz_stream_raw *)stream;
+ return mz_stream_seek(raw->stream.base, offset, origin);
+}
+
+int32_t mz_stream_raw_close(void *stream) {
+ MZ_UNUSED(stream);
+ return MZ_OK;
+}
+
+int32_t mz_stream_raw_error(void *stream) {
+ mz_stream_raw *raw = (mz_stream_raw *)stream;
+ return mz_stream_error(raw->stream.base);
+}
+
+int32_t mz_stream_raw_get_prop_int64(void *stream, int32_t prop, int64_t *value) {
+ mz_stream_raw *raw = (mz_stream_raw *)stream;
+ switch (prop) {
+ case MZ_STREAM_PROP_TOTAL_IN:
+ *value = raw->total_in;
+ return MZ_OK;
+ case MZ_STREAM_PROP_TOTAL_OUT:
+ *value = raw->total_out;
+ return MZ_OK;
+ }
+ return MZ_EXIST_ERROR;
+}
+
+int32_t mz_stream_raw_set_prop_int64(void *stream, int32_t prop, int64_t value) {
+ mz_stream_raw *raw = (mz_stream_raw *)stream;
+ switch (prop) {
+ case MZ_STREAM_PROP_TOTAL_IN_MAX:
+ raw->max_total_in = value;
+ return MZ_OK;
+ }
+ return MZ_EXIST_ERROR;
+}
+
+/***************************************************************************/
+
+static mz_stream_vtbl mz_stream_raw_vtbl = {
+ mz_stream_raw_open,
+ mz_stream_raw_is_open,
+ mz_stream_raw_read,
+ mz_stream_raw_write,
+ mz_stream_raw_tell,
+ mz_stream_raw_seek,
+ mz_stream_raw_close,
+ mz_stream_raw_error,
+ mz_stream_raw_create,
+ mz_stream_raw_delete,
+ mz_stream_raw_get_prop_int64,
+ mz_stream_raw_set_prop_int64
+};
+
+/***************************************************************************/
+
+void *mz_stream_raw_create(void **stream) {
+ mz_stream_raw *raw = NULL;
+
+ raw = (mz_stream_raw *)MZ_ALLOC(sizeof(mz_stream_raw));
+ if (raw != NULL) {
+ memset(raw, 0, sizeof(mz_stream_raw));
+ raw->stream.vtbl = &mz_stream_raw_vtbl;
+ }
+ if (stream != NULL)
+ *stream = raw;
+
+ return raw;
+}
+
+void mz_stream_raw_delete(void **stream) {
+ mz_stream_raw *raw = NULL;
+ if (stream == NULL)
+ return;
+ raw = (mz_stream_raw *)*stream;
+ if (raw != NULL)
+ MZ_FREE(raw);
+ *stream = NULL;
+}
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm.h b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm.h
new file mode 100644
index 0000000..8b0027c
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm.h
@@ -0,0 +1,132 @@
+/* mz_strm.h -- Stream interface
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#ifndef MZ_STREAM_H
+#define MZ_STREAM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************/
+
+#define MZ_STREAM_PROP_TOTAL_IN (1)
+#define MZ_STREAM_PROP_TOTAL_IN_MAX (2)
+#define MZ_STREAM_PROP_TOTAL_OUT (3)
+#define MZ_STREAM_PROP_TOTAL_OUT_MAX (4)
+#define MZ_STREAM_PROP_HEADER_SIZE (5)
+#define MZ_STREAM_PROP_FOOTER_SIZE (6)
+#define MZ_STREAM_PROP_DISK_SIZE (7)
+#define MZ_STREAM_PROP_DISK_NUMBER (8)
+#define MZ_STREAM_PROP_COMPRESS_LEVEL (9)
+#define MZ_STREAM_PROP_COMPRESS_METHOD (10)
+#define MZ_STREAM_PROP_COMPRESS_WINDOW (11)
+
+/***************************************************************************/
+
+typedef int32_t (*mz_stream_open_cb) (void *stream, const char *path, int32_t mode);
+typedef int32_t (*mz_stream_is_open_cb) (void *stream);
+typedef int32_t (*mz_stream_read_cb) (void *stream, void *buf, int32_t size);
+typedef int32_t (*mz_stream_write_cb) (void *stream, const void *buf, int32_t size);
+typedef int64_t (*mz_stream_tell_cb) (void *stream);
+typedef int32_t (*mz_stream_seek_cb) (void *stream, int64_t offset, int32_t origin);
+typedef int32_t (*mz_stream_close_cb) (void *stream);
+typedef int32_t (*mz_stream_error_cb) (void *stream);
+typedef void* (*mz_stream_create_cb) (void **stream);
+typedef void (*mz_stream_destroy_cb) (void **stream);
+
+typedef int32_t (*mz_stream_get_prop_int64_cb) (void *stream, int32_t prop, int64_t *value);
+typedef int32_t (*mz_stream_set_prop_int64_cb) (void *stream, int32_t prop, int64_t value);
+
+typedef int32_t (*mz_stream_find_cb) (void *stream, const void *find, int32_t find_size,
+ int64_t max_seek, int64_t *position);
+
+/***************************************************************************/
+
+typedef struct mz_stream_vtbl_s {
+ mz_stream_open_cb open;
+ mz_stream_is_open_cb is_open;
+ mz_stream_read_cb read;
+ mz_stream_write_cb write;
+ mz_stream_tell_cb tell;
+ mz_stream_seek_cb seek;
+ mz_stream_close_cb close;
+ mz_stream_error_cb error;
+ mz_stream_create_cb create;
+ mz_stream_destroy_cb destroy;
+
+ mz_stream_get_prop_int64_cb get_prop_int64;
+ mz_stream_set_prop_int64_cb set_prop_int64;
+} mz_stream_vtbl;
+
+typedef struct mz_stream_s {
+ mz_stream_vtbl *vtbl;
+ struct mz_stream_s *base;
+} mz_stream;
+
+/***************************************************************************/
+
+int32_t mz_stream_open(void *stream, const char *path, int32_t mode);
+int32_t mz_stream_is_open(void *stream);
+int32_t mz_stream_read(void *stream, void *buf, int32_t size);
+int32_t mz_stream_read_uint8(void *stream, uint8_t *value);
+int32_t mz_stream_read_uint16(void *stream, uint16_t *value);
+int32_t mz_stream_read_uint32(void *stream, uint32_t *value);
+int32_t mz_stream_read_int64(void *stream, int64_t *value);
+int32_t mz_stream_read_uint64(void *stream, uint64_t *value);
+int32_t mz_stream_write(void *stream, const void *buf, int32_t size);
+int32_t mz_stream_write_uint8(void *stream, uint8_t value);
+int32_t mz_stream_write_uint16(void *stream, uint16_t value);
+int32_t mz_stream_write_uint32(void *stream, uint32_t value);
+int32_t mz_stream_write_int64(void *stream, int64_t value);
+int32_t mz_stream_write_uint64(void *stream, uint64_t value);
+int32_t mz_stream_copy(void *target, void *source, int32_t len);
+int32_t mz_stream_copy_to_end(void *target, void *source);
+int32_t mz_stream_copy_stream(void *target, mz_stream_write_cb write_cb, void *source, mz_stream_read_cb read_cb, int32_t len);
+int32_t mz_stream_copy_stream_to_end(void *target, mz_stream_write_cb write_cb, void *source, mz_stream_read_cb read_cb);
+int64_t mz_stream_tell(void *stream);
+int32_t mz_stream_seek(void *stream, int64_t offset, int32_t origin);
+int32_t mz_stream_find(void *stream, const void *find, int32_t find_size, int64_t max_seek, int64_t *position);
+int32_t mz_stream_find_reverse(void *stream, const void *find, int32_t find_size, int64_t max_seek, int64_t *position);
+int32_t mz_stream_close(void *stream);
+int32_t mz_stream_error(void *stream);
+
+int32_t mz_stream_set_base(void *stream, void *base);
+void* mz_stream_get_interface(void *stream);
+int32_t mz_stream_get_prop_int64(void *stream, int32_t prop, int64_t *value);
+int32_t mz_stream_set_prop_int64(void *stream, int32_t prop, int64_t value);
+
+void* mz_stream_create(void **stream, mz_stream_vtbl *vtbl);
+void mz_stream_delete(void **stream);
+
+/***************************************************************************/
+
+int32_t mz_stream_raw_open(void *stream, const char *filename, int32_t mode);
+int32_t mz_stream_raw_is_open(void *stream);
+int32_t mz_stream_raw_read(void *stream, void *buf, int32_t size);
+int32_t mz_stream_raw_write(void *stream, const void *buf, int32_t size);
+int64_t mz_stream_raw_tell(void *stream);
+int32_t mz_stream_raw_seek(void *stream, int64_t offset, int32_t origin);
+int32_t mz_stream_raw_close(void *stream);
+int32_t mz_stream_raw_error(void *stream);
+
+int32_t mz_stream_raw_get_prop_int64(void *stream, int32_t prop, int64_t *value);
+int32_t mz_stream_raw_set_prop_int64(void *stream, int32_t prop, int64_t value);
+
+void* mz_stream_raw_create(void **stream);
+void mz_stream_raw_delete(void **stream);
+
+/***************************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_buf.c b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_buf.c
new file mode 100644
index 0000000..1dfdfdf
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_buf.c
@@ -0,0 +1,385 @@
+/* mz_strm_buf.c -- Stream for buffering reads/writes
+ part of the minizip-ng project
+
+ This version of ioapi is designed to buffer IO.
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#include "mz.h"
+#include "mz_strm.h"
+#include "mz_strm_buf.h"
+
+/***************************************************************************/
+
+static mz_stream_vtbl mz_stream_buffered_vtbl = {
+ mz_stream_buffered_open,
+ mz_stream_buffered_is_open,
+ mz_stream_buffered_read,
+ mz_stream_buffered_write,
+ mz_stream_buffered_tell,
+ mz_stream_buffered_seek,
+ mz_stream_buffered_close,
+ mz_stream_buffered_error,
+ mz_stream_buffered_create,
+ mz_stream_buffered_delete,
+ NULL,
+ NULL
+};
+
+/***************************************************************************/
+
+typedef struct mz_stream_buffered_s {
+ mz_stream stream;
+ int32_t error;
+ char readbuf[INT16_MAX];
+ int32_t readbuf_len;
+ int32_t readbuf_pos;
+ int32_t readbuf_hits;
+ int32_t readbuf_misses;
+ char writebuf[INT16_MAX];
+ int32_t writebuf_len;
+ int32_t writebuf_pos;
+ int32_t writebuf_hits;
+ int32_t writebuf_misses;
+ int64_t position;
+} mz_stream_buffered;
+
+/***************************************************************************/
+
+#if 0
+# define mz_stream_buffered_print printf
+#else
+# define mz_stream_buffered_print(fmt,...)
+#endif
+
+/***************************************************************************/
+
+static int32_t mz_stream_buffered_reset(void *stream) {
+ mz_stream_buffered *buffered = (mz_stream_buffered *)stream;
+
+ buffered->readbuf_len = 0;
+ buffered->readbuf_pos = 0;
+ buffered->writebuf_len = 0;
+ buffered->writebuf_pos = 0;
+ buffered->position = 0;
+
+ return MZ_OK;
+}
+
+int32_t mz_stream_buffered_open(void *stream, const char *path, int32_t mode) {
+ mz_stream_buffered *buffered = (mz_stream_buffered *)stream;
+ mz_stream_buffered_print("Buffered - Open (mode %" PRId32 ")\n", mode);
+ mz_stream_buffered_reset(buffered);
+ return mz_stream_open(buffered->stream.base, path, mode);
+}
+
+int32_t mz_stream_buffered_is_open(void *stream) {
+ mz_stream_buffered *buffered = (mz_stream_buffered *)stream;
+ return mz_stream_is_open(buffered->stream.base);
+}
+
+static int32_t mz_stream_buffered_flush(void *stream, int32_t *written) {
+ mz_stream_buffered *buffered = (mz_stream_buffered *)stream;
+ int32_t total_bytes_written = 0;
+ int32_t bytes_to_write = buffered->writebuf_len;
+ int32_t bytes_left_to_write = buffered->writebuf_len;
+ int32_t bytes_written = 0;
+
+ *written = 0;
+
+ while (bytes_left_to_write > 0) {
+ bytes_written = mz_stream_write(buffered->stream.base,
+ buffered->writebuf + (bytes_to_write - bytes_left_to_write), bytes_left_to_write);
+
+ if (bytes_written != bytes_left_to_write)
+ return MZ_WRITE_ERROR;
+
+ buffered->writebuf_misses += 1;
+
+ mz_stream_buffered_print("Buffered - Write flush (%" PRId32 ":%" PRId32 " len %" PRId32 ")\n",
+ bytes_to_write, bytes_left_to_write, buffered->writebuf_len);
+
+ total_bytes_written += bytes_written;
+ bytes_left_to_write -= bytes_written;
+ buffered->position += bytes_written;
+ }
+
+ buffered->writebuf_len = 0;
+ buffered->writebuf_pos = 0;
+
+ *written = total_bytes_written;
+ return MZ_OK;
+}
+
+int32_t mz_stream_buffered_read(void *stream, void *buf, int32_t size) {
+ mz_stream_buffered *buffered = (mz_stream_buffered *)stream;
+ int32_t buf_len = 0;
+ int32_t bytes_to_read = 0;
+ int32_t bytes_to_copy = 0;
+ int32_t bytes_left_to_read = size;
+ int32_t bytes_read = 0;
+ int32_t bytes_flushed = 0;
+
+ mz_stream_buffered_print("Buffered - Read (size %" PRId32 " pos %" PRId64 ")\n", size, buffered->position);
+
+ if (buffered->writebuf_len > 0) {
+ int64_t position = buffered->position + buffered->writebuf_pos
+
+ mz_stream_buffered_print("Buffered - Switch from write to read, flushing (pos %" PRId64 ")\n", position);
+
+ mz_stream_buffered_flush(stream, &bytes_flushed);
+ mz_stream_buffered_seek(stream, position, MZ_SEEK_SET);
+ }
+
+ while (bytes_left_to_read > 0) {
+ if ((buffered->readbuf_len == 0) || (buffered->readbuf_pos == buffered->readbuf_len)) {
+ if (buffered->readbuf_len == sizeof(buffered->readbuf)) {
+ buffered->readbuf_pos = 0;
+ buffered->readbuf_len = 0;
+ }
+
+ bytes_to_read = (int32_t)sizeof(buffered->readbuf) - (buffered->readbuf_len - buffered->readbuf_pos);
+ bytes_read = mz_stream_read(buffered->stream.base, buffered->readbuf + buffered->readbuf_pos, bytes_to_read);
+ if (bytes_read < 0)
+ return bytes_read;
+
+ buffered->readbuf_misses += 1;
+ buffered->readbuf_len += bytes_read;
+ buffered->position += bytes_read;
+
+ mz_stream_buffered_print("Buffered - Filled (read %" PRId32 "/%" PRId32 " buf %" PRId32 ":%" PRId32 " pos %" PRId64 ")\n",
+ bytes_read, bytes_to_read, buffered->readbuf_pos, buffered->readbuf_len, buffered->position);
+
+ if (bytes_read == 0)
+ break;
+ }
+
+ if ((buffered->readbuf_len - buffered->readbuf_pos) > 0) {
+ bytes_to_copy = buffered->readbuf_len - buffered->readbuf_pos;
+ if (bytes_to_copy > bytes_left_to_read)
+ bytes_to_copy = bytes_left_to_read;
+
+ memcpy((char *)buf + buf_len, buffered->readbuf + buffered->readbuf_pos, bytes_to_copy);
+
+ buf_len += bytes_to_copy;
+ bytes_left_to_read -= bytes_to_copy;
+
+ buffered->readbuf_hits += 1;
+ buffered->readbuf_pos += bytes_to_copy;
+
+ mz_stream_buffered_print("Buffered - Emptied (copied %" PRId32 " remaining %" PRId32 " buf %" PRId32 ":%" PRId32 " pos %" PRId64 ")\n",
+ bytes_to_copy, bytes_left_to_read, buffered->readbuf_pos, buffered->readbuf_len, buffered->position);
+ }
+ }
+
+ return size - bytes_left_to_read;
+}
+
+int32_t mz_stream_buffered_write(void *stream, const void *buf, int32_t size) {
+ mz_stream_buffered *buffered = (mz_stream_buffered *)stream;
+ int32_t bytes_to_write = size;
+ int32_t bytes_left_to_write = size;
+ int32_t bytes_to_copy = 0;
+ int32_t bytes_used = 0;
+ int32_t bytes_flushed = 0;
+ int32_t err = MZ_OK;
+
+
+ mz_stream_buffered_print("Buffered - Write (size %" PRId32 " len %" PRId32 " pos %" PRId64 ")\n",
+ size, buffered->writebuf_len, buffered->position);
+
+ if (buffered->readbuf_len > 0) {
+ buffered->position -= buffered->readbuf_len;
+ buffered->position += buffered->readbuf_pos;
+
+ buffered->readbuf_len = 0;
+ buffered->readbuf_pos = 0;
+
+ mz_stream_buffered_print("Buffered - Switch from read to write (pos %" PRId64 ")\n", buffered->position);
+
+ err = mz_stream_seek(buffered->stream.base, buffered->position, MZ_SEEK_SET);
+ if (err != MZ_OK)
+ return err;
+ }
+
+ while (bytes_left_to_write > 0) {
+ bytes_used = buffered->writebuf_len;
+ if (bytes_used > buffered->writebuf_pos)
+ bytes_used = buffered->writebuf_pos;
+ bytes_to_copy = (int32_t)sizeof(buffered->writebuf) - bytes_used;
+ if (bytes_to_copy > bytes_left_to_write)
+ bytes_to_copy = bytes_left_to_write;
+
+ if (bytes_to_copy == 0) {
+ err = mz_stream_buffered_flush(stream, &bytes_flushed);
+ if (err != MZ_OK)
+ return err;
+ if (bytes_flushed == 0)
+ return 0;
+
+ continue;
+ }
+
+ memcpy(buffered->writebuf + buffered->writebuf_pos,
+ (const char *)buf + (bytes_to_write - bytes_left_to_write), bytes_to_copy);
+
+ mz_stream_buffered_print("Buffered - Write copy (remaining %" PRId32 " write %" PRId32 ":%" PRId32 " len %" PRId32 ")\n",
+ bytes_to_copy, bytes_to_write, bytes_left_to_write, buffered->writebuf_len);
+
+ bytes_left_to_write -= bytes_to_copy;
+
+ buffered->writebuf_pos += bytes_to_copy;
+ buffered->writebuf_hits += 1;
+ if (buffered->writebuf_pos > buffered->writebuf_len)
+ buffered->writebuf_len += buffered->writebuf_pos - buffered->writebuf_len;
+ }
+
+ return size - bytes_left_to_write;
+}
+
+int64_t mz_stream_buffered_tell(void *stream) {
+ mz_stream_buffered *buffered = (mz_stream_buffered *)stream;
+ int64_t position = mz_stream_tell(buffered->stream.base);
+
+ buffered->position = position;
+
+ mz_stream_buffered_print("Buffered - Tell (pos %" PRId64 " readpos %" PRId32 " writepos %" PRId32 ")\n",
+ buffered->position, buffered->readbuf_pos, buffered->writebuf_pos);
+
+ if (buffered->readbuf_len > 0)
+ position -= ((int64_t)buffered->readbuf_len - buffered->readbuf_pos);
+ if (buffered->writebuf_len > 0)
+ position += buffered->writebuf_pos;
+ return position;
+}
+
+int32_t mz_stream_buffered_seek(void *stream, int64_t offset, int32_t origin) {
+ mz_stream_buffered *buffered = (mz_stream_buffered *)stream;
+ int32_t bytes_flushed = 0;
+ int32_t err = MZ_OK;
+
+ mz_stream_buffered_print("Buffered - Seek (origin %" PRId32 " offset %" PRId64 " pos %" PRId64 ")\n",
+ origin, offset, buffered->position);
+
+ switch (origin) {
+ case MZ_SEEK_SET:
+
+ if ((buffered->readbuf_len > 0) && (offset < buffered->position) &&
+ (offset >= buffered->position - buffered->readbuf_len)) {
+ buffered->readbuf_pos = (int32_t)(offset - (buffered->position - buffered->readbuf_len));
+ return MZ_OK;
+ }
+ if (buffered->writebuf_len > 0) {
+ if ((offset >= buffered->position) && (offset <= buffered->position + buffered->writebuf_len)) {
+ buffered->writebuf_pos = (int32_t)(offset - buffered->position);
+ return MZ_OK;
+ }
+ }
+
+ err = mz_stream_buffered_flush(stream, &bytes_flushed);
+ if (err != MZ_OK)
+ return err;
+
+ buffered->position = offset;
+ break;
+
+ case MZ_SEEK_CUR:
+
+ if (buffered->readbuf_len > 0) {
+ if (offset <= ((int64_t)buffered->readbuf_len - buffered->readbuf_pos)) {
+ buffered->readbuf_pos += (uint32_t)offset;
+ return MZ_OK;
+ }
+ offset -= ((int64_t)buffered->readbuf_len - buffered->readbuf_pos);
+ buffered->position += offset;
+ }
+ if (buffered->writebuf_len > 0) {
+ if (offset <= ((int64_t)buffered->writebuf_len - buffered->writebuf_pos)) {
+ buffered->writebuf_pos += (uint32_t)offset;
+ return MZ_OK;
+ }
+ /* offset -= (buffered->writebuf_len - buffered->writebuf_pos); */
+ }
+
+ err = mz_stream_buffered_flush(stream, &bytes_flushed);
+ if (err != MZ_OK)
+ return err;
+
+ break;
+
+ case MZ_SEEK_END:
+
+ if (buffered->writebuf_len > 0) {
+ buffered->writebuf_pos = buffered->writebuf_len;
+ return MZ_OK;
+ }
+ break;
+ }
+
+ buffered->readbuf_len = 0;
+ buffered->readbuf_pos = 0;
+ buffered->writebuf_len = 0;
+ buffered->writebuf_pos = 0;
+
+ return mz_stream_seek(buffered->stream.base, offset, origin);
+}
+
+int32_t mz_stream_buffered_close(void *stream) {
+ mz_stream_buffered *buffered = (mz_stream_buffered *)stream;
+ int32_t bytes_flushed = 0;
+
+ mz_stream_buffered_flush(stream, &bytes_flushed);
+ mz_stream_buffered_print("Buffered - Close (flushed %" PRId32 ")\n", bytes_flushed);
+
+ if (buffered->readbuf_hits + buffered->readbuf_misses > 0) {
+ mz_stream_buffered_print("Buffered - Read efficiency %.02f%%\n",
+ (buffered->readbuf_hits / ((float)buffered->readbuf_hits + buffered->readbuf_misses)) * 100);
+ }
+
+ if (buffered->writebuf_hits + buffered->writebuf_misses > 0) {
+ mz_stream_buffered_print("Buffered - Write efficiency %.02f%%\n",
+ (buffered->writebuf_hits / ((float)buffered->writebuf_hits + buffered->writebuf_misses)) * 100);
+ }
+
+ mz_stream_buffered_reset(buffered);
+
+ return mz_stream_close(buffered->stream.base);
+}
+
+int32_t mz_stream_buffered_error(void *stream) {
+ mz_stream_buffered *buffered = (mz_stream_buffered *)stream;
+ return mz_stream_error(buffered->stream.base);
+}
+
+void *mz_stream_buffered_create(void **stream) {
+ mz_stream_buffered *buffered = NULL;
+
+ buffered = (mz_stream_buffered *)MZ_ALLOC(sizeof(mz_stream_buffered));
+ if (buffered != NULL) {
+ memset(buffered, 0, sizeof(mz_stream_buffered));
+ buffered->stream.vtbl = &mz_stream_buffered_vtbl;
+ }
+ if (stream != NULL)
+ *stream = buffered;
+
+ return buffered;
+}
+
+void mz_stream_buffered_delete(void **stream) {
+ mz_stream_buffered *buffered = NULL;
+ if (stream == NULL)
+ return;
+ buffered = (mz_stream_buffered *)*stream;
+ if (buffered != NULL)
+ MZ_FREE(buffered);
+ *stream = NULL;
+}
+
+void *mz_stream_buffered_get_interface(void) {
+ return (void *)&mz_stream_buffered_vtbl;
+}
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_buf.h b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_buf.h
new file mode 100644
index 0000000..b71e6e4
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_buf.h
@@ -0,0 +1,42 @@
+/* mz_strm_buf.h -- Stream for buffering reads/writes
+ part of the minizip-ng project
+
+ This version of ioapi is designed to buffer IO.
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#ifndef MZ_STREAM_BUFFERED_H
+#define MZ_STREAM_BUFFERED_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************/
+
+int32_t mz_stream_buffered_open(void *stream, const char *path, int32_t mode);
+int32_t mz_stream_buffered_is_open(void *stream);
+int32_t mz_stream_buffered_read(void *stream, void *buf, int32_t size);
+int32_t mz_stream_buffered_write(void *stream, const void *buf, int32_t size);
+int64_t mz_stream_buffered_tell(void *stream);
+int32_t mz_stream_buffered_seek(void *stream, int64_t offset, int32_t origin);
+int32_t mz_stream_buffered_close(void *stream);
+int32_t mz_stream_buffered_error(void *stream);
+
+void* mz_stream_buffered_create(void **stream);
+void mz_stream_buffered_delete(void **stream);
+
+void* mz_stream_buffered_get_interface(void);
+
+/***************************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_mem.c b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_mem.c
new file mode 100644
index 0000000..f4a882d
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_mem.c
@@ -0,0 +1,272 @@
+/* mz_strm_mem.c -- Stream for memory access
+ part of the minizip-ng project
+
+ This interface is designed to access memory rather than files.
+ We do use a region of memory to put data in to and take it out of.
+
+ Based on Unzip ioapi.c version 0.22, May 19th, 2003
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+ Copyright (C) 2003 Justin Fletcher
+ Copyright (C) 1998-2003 Gilles Vollant
+ https://www.winimage.com/zLibDll/minizip.html
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+
+#include "mz.h"
+#include "mz_strm.h"
+#include "mz_strm_mem.h"
+
+/***************************************************************************/
+
+static mz_stream_vtbl mz_stream_mem_vtbl = {
+ mz_stream_mem_open,
+ mz_stream_mem_is_open,
+ mz_stream_mem_read,
+ mz_stream_mem_write,
+ mz_stream_mem_tell,
+ mz_stream_mem_seek,
+ mz_stream_mem_close,
+ mz_stream_mem_error,
+ mz_stream_mem_create,
+ mz_stream_mem_delete,
+ NULL,
+ NULL
+};
+
+/***************************************************************************/
+
+typedef struct mz_stream_mem_s {
+ mz_stream stream;
+ int32_t mode;
+ uint8_t *buffer; /* Memory buffer pointer */
+ int32_t size; /* Size of the memory buffer */
+ int32_t limit; /* Furthest we've written */
+ int32_t position; /* Current position in the memory */
+ int32_t grow_size; /* Size to grow when full */
+} mz_stream_mem;
+
+/***************************************************************************/
+
+static int32_t mz_stream_mem_set_size(void *stream, int32_t size) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+ int32_t new_size = size;
+ uint8_t *new_buf = NULL;
+
+
+ new_buf = (uint8_t *)MZ_ALLOC((uint32_t)new_size);
+ if (new_buf == NULL)
+ return MZ_BUF_ERROR;
+
+ if (mem->buffer) {
+ memcpy(new_buf, mem->buffer, mem->size);
+ MZ_FREE(mem->buffer);
+ }
+
+ mem->buffer = new_buf;
+ mem->size = new_size;
+ return MZ_OK;
+}
+
+int32_t mz_stream_mem_open(void *stream, const char *path, int32_t mode) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+ int32_t err = MZ_OK;
+
+ MZ_UNUSED(path);
+
+ mem->mode = mode;
+ mem->limit = 0;
+ mem->position = 0;
+
+ if (mem->mode & MZ_OPEN_MODE_CREATE)
+ err = mz_stream_mem_set_size(stream, mem->grow_size);
+ else
+ mem->limit = mem->size;
+
+ return err;
+}
+
+int32_t mz_stream_mem_is_open(void *stream) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+ if (mem->buffer == NULL)
+ return MZ_OPEN_ERROR;
+ return MZ_OK;
+}
+
+int32_t mz_stream_mem_read(void *stream, void *buf, int32_t size) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+
+ if (size > mem->size - mem->position)
+ size = mem->size - mem->position;
+ if (mem->position + size > mem->limit)
+ size = mem->limit - mem->position;
+
+ if (size <= 0)
+ return 0;
+
+ memcpy(buf, mem->buffer + mem->position, size);
+ mem->position += size;
+
+ return size;
+}
+
+int32_t mz_stream_mem_write(void *stream, const void *buf, int32_t size) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+ int32_t new_size = 0;
+ int32_t err = MZ_OK;
+
+ if (size == 0)
+ return size;
+
+ if (size > mem->size - mem->position) {
+ if (mem->mode & MZ_OPEN_MODE_CREATE) {
+ new_size = mem->size;
+ if (size < mem->grow_size)
+ new_size += mem->grow_size;
+ else
+ new_size += size;
+
+ err = mz_stream_mem_set_size(stream, new_size);
+ if (err != MZ_OK)
+ return err;
+ } else {
+ size = mem->size - mem->position;
+ }
+ }
+
+ memcpy(mem->buffer + mem->position, buf, size);
+
+ mem->position += size;
+ if (mem->position > mem->limit)
+ mem->limit = mem->position;
+
+ return size;
+}
+
+int64_t mz_stream_mem_tell(void *stream) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+ return mem->position;
+}
+
+int32_t mz_stream_mem_seek(void *stream, int64_t offset, int32_t origin) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+ int64_t new_pos = 0;
+ int32_t err = MZ_OK;
+
+ switch (origin) {
+ case MZ_SEEK_CUR:
+ new_pos = mem->position + offset;
+ break;
+ case MZ_SEEK_END:
+ new_pos = mem->limit + offset;
+ break;
+ case MZ_SEEK_SET:
+ new_pos = offset;
+ break;
+ default:
+ return MZ_SEEK_ERROR;
+ }
+
+ if (new_pos > mem->size) {
+ if ((mem->mode & MZ_OPEN_MODE_CREATE) == 0)
+ return MZ_SEEK_ERROR;
+
+ err = mz_stream_mem_set_size(stream, (int32_t)new_pos);
+ if (err != MZ_OK)
+ return err;
+ } else if (new_pos < 0) {
+ return MZ_SEEK_ERROR;
+ }
+
+ mem->position = (int32_t)new_pos;
+ return MZ_OK;
+}
+
+int32_t mz_stream_mem_close(void *stream) {
+ MZ_UNUSED(stream);
+
+ /* We never return errors */
+ return MZ_OK;
+}
+
+int32_t mz_stream_mem_error(void *stream) {
+ MZ_UNUSED(stream);
+
+ /* We never return errors */
+ return MZ_OK;
+}
+
+void mz_stream_mem_set_buffer(void *stream, void *buf, int32_t size) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+ mem->buffer = (uint8_t *)buf;
+ mem->size = size;
+ mem->limit = size;
+}
+
+int32_t mz_stream_mem_get_buffer(void *stream, const void **buf) {
+ return mz_stream_mem_get_buffer_at(stream, 0, buf);
+}
+
+int32_t mz_stream_mem_get_buffer_at(void *stream, int64_t position, const void **buf) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+ if (buf == NULL || position < 0 || mem->size < position || mem->buffer == NULL)
+ return MZ_SEEK_ERROR;
+ *buf = mem->buffer + position;
+ return MZ_OK;
+}
+
+int32_t mz_stream_mem_get_buffer_at_current(void *stream, const void **buf) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+ return mz_stream_mem_get_buffer_at(stream, mem->position, buf);
+}
+
+void mz_stream_mem_get_buffer_length(void *stream, int32_t *length) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+ *length = mem->limit;
+}
+
+void mz_stream_mem_set_buffer_limit(void *stream, int32_t limit) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+ mem->limit = limit;
+}
+
+void mz_stream_mem_set_grow_size(void *stream, int32_t grow_size) {
+ mz_stream_mem *mem = (mz_stream_mem *)stream;
+ mem->grow_size = grow_size;
+}
+
+void *mz_stream_mem_create(void **stream) {
+ mz_stream_mem *mem = NULL;
+
+ mem = (mz_stream_mem *)MZ_ALLOC(sizeof(mz_stream_mem));
+ if (mem != NULL) {
+ memset(mem, 0, sizeof(mz_stream_mem));
+ mem->stream.vtbl = &mz_stream_mem_vtbl;
+ mem->grow_size = 4096;
+ }
+ if (stream != NULL)
+ *stream = mem;
+
+ return mem;
+}
+
+void mz_stream_mem_delete(void **stream) {
+ mz_stream_mem *mem = NULL;
+ if (stream == NULL)
+ return;
+ mem = (mz_stream_mem *)*stream;
+ if (mem != NULL) {
+ if ((mem->mode & MZ_OPEN_MODE_CREATE) && (mem->buffer != NULL))
+ MZ_FREE(mem->buffer);
+ MZ_FREE(mem);
+ }
+ *stream = NULL;
+}
+
+void *mz_stream_mem_get_interface(void) {
+ return (void *)&mz_stream_mem_vtbl;
+}
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_mem.h b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_mem.h
new file mode 100644
index 0000000..5bfa13d
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_mem.h
@@ -0,0 +1,48 @@
+/* mz_strm_mem.h -- Stream for memory access
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#ifndef MZ_STREAM_MEM_H
+#define MZ_STREAM_MEM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************/
+
+int32_t mz_stream_mem_open(void *stream, const char *filename, int32_t mode);
+int32_t mz_stream_mem_is_open(void *stream);
+int32_t mz_stream_mem_read(void *stream, void *buf, int32_t size);
+int32_t mz_stream_mem_write(void *stream, const void *buf, int32_t size);
+int64_t mz_stream_mem_tell(void *stream);
+int32_t mz_stream_mem_seek(void *stream, int64_t offset, int32_t origin);
+int32_t mz_stream_mem_close(void *stream);
+int32_t mz_stream_mem_error(void *stream);
+
+void mz_stream_mem_set_buffer(void *stream, void *buf, int32_t size);
+int32_t mz_stream_mem_get_buffer(void *stream, const void **buf);
+int32_t mz_stream_mem_get_buffer_at(void *stream, int64_t position, const void **buf);
+int32_t mz_stream_mem_get_buffer_at_current(void *stream, const void **buf);
+void mz_stream_mem_get_buffer_length(void *stream, int32_t *length);
+void mz_stream_mem_set_buffer_limit(void *stream, int32_t limit);
+void mz_stream_mem_set_grow_size(void *stream, int32_t grow_size);
+
+void* mz_stream_mem_create(void **stream);
+void mz_stream_mem_delete(void **stream);
+
+void* mz_stream_mem_get_interface(void);
+
+/***************************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_os.h b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_os.h
new file mode 100644
index 0000000..614e255
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_os.h
@@ -0,0 +1,40 @@
+/* mz_sstrm_os.h -- Stream for filesystem access
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#ifndef MZ_STREAM_OS_H
+#define MZ_STREAM_OS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************/
+
+int32_t mz_stream_os_open(void *stream, const char *path, int32_t mode);
+int32_t mz_stream_os_is_open(void *stream);
+int32_t mz_stream_os_read(void *stream, void *buf, int32_t size);
+int32_t mz_stream_os_write(void *stream, const void *buf, int32_t size);
+int64_t mz_stream_os_tell(void *stream);
+int32_t mz_stream_os_seek(void *stream, int64_t offset, int32_t origin);
+int32_t mz_stream_os_close(void *stream);
+int32_t mz_stream_os_error(void *stream);
+
+void* mz_stream_os_create(void **stream);
+void mz_stream_os_delete(void **stream);
+
+void* mz_stream_os_get_interface(void);
+
+/***************************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_os_posix.c b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_os_posix.c
new file mode 100644
index 0000000..f0b5bd3
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_os_posix.c
@@ -0,0 +1,206 @@
+/* mz_strm_posix.c -- Stream for filesystem access for posix/linux
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+ Modifications for Zip64 support
+ Copyright (C) 2009-2010 Mathias Svensson
+ http://result42.com
+ Copyright (C) 1998-2010 Gilles Vollant
+ https://www.winimage.com/zLibDll/minizip.html
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+
+#include "mz.h"
+#include "mz_strm.h"
+#include "mz_strm_os.h"
+
+#include /* fopen, fread.. */
+#include
+
+/***************************************************************************/
+
+#define fopen64 fopen
+#ifndef MZ_FILE32_API
+# ifndef NO_FSEEKO
+# define ftello64 ftello
+# define fseeko64 fseeko
+# elif defined(_MSC_VER) && (_MSC_VER >= 1400)
+# define ftello64 _ftelli64
+# define fseeko64 _fseeki64
+# endif
+#endif
+#ifndef ftello64
+# define ftello64 ftell
+#endif
+#ifndef fseeko64
+# define fseeko64 fseek
+#endif
+
+/***************************************************************************/
+
+static mz_stream_vtbl mz_stream_os_vtbl = {
+ mz_stream_os_open,
+ mz_stream_os_is_open,
+ mz_stream_os_read,
+ mz_stream_os_write,
+ mz_stream_os_tell,
+ mz_stream_os_seek,
+ mz_stream_os_close,
+ mz_stream_os_error,
+ mz_stream_os_create,
+ mz_stream_os_delete,
+ NULL,
+ NULL
+};
+
+/***************************************************************************/
+
+typedef struct mz_stream_posix_s {
+ mz_stream stream;
+ int32_t error;
+ FILE *handle;
+} mz_stream_posix;
+
+/***************************************************************************/
+
+int32_t mz_stream_os_open(void *stream, const char *path, int32_t mode) {
+ mz_stream_posix *posix = (mz_stream_posix *)stream;
+ const char *mode_fopen = NULL;
+
+ if (path == NULL)
+ return MZ_PARAM_ERROR;
+
+ if ((mode & MZ_OPEN_MODE_READWRITE) == MZ_OPEN_MODE_READ)
+ mode_fopen = "rb";
+ else if (mode & MZ_OPEN_MODE_APPEND)
+ mode_fopen = "r+b";
+ else if (mode & MZ_OPEN_MODE_CREATE)
+ mode_fopen = "wb";
+ else
+ return MZ_OPEN_ERROR;
+
+ posix->handle = fopen64(path, mode_fopen);
+ if (posix->handle == NULL) {
+ posix->error = errno;
+ return MZ_OPEN_ERROR;
+ }
+
+ if (mode & MZ_OPEN_MODE_APPEND)
+ return mz_stream_os_seek(stream, 0, MZ_SEEK_END);
+
+ return MZ_OK;
+}
+
+int32_t mz_stream_os_is_open(void *stream) {
+ mz_stream_posix *posix = (mz_stream_posix*)stream;
+ if (posix->handle == NULL)
+ return MZ_OPEN_ERROR;
+ return MZ_OK;
+}
+
+int32_t mz_stream_os_read(void *stream, void *buf, int32_t size) {
+ mz_stream_posix *posix = (mz_stream_posix*)stream;
+ int32_t read = (int32_t)fread(buf, 1, (size_t)size, posix->handle);
+ if (read < size && ferror(posix->handle)) {
+ posix->error = errno;
+ return MZ_READ_ERROR;
+ }
+ return read;
+}
+
+int32_t mz_stream_os_write(void *stream, const void *buf, int32_t size) {
+ mz_stream_posix *posix = (mz_stream_posix*)stream;
+ int32_t written = (int32_t)fwrite(buf, 1, (size_t)size, posix->handle);
+ if (written < size && ferror(posix->handle)) {
+ posix->error = errno;
+ return MZ_WRITE_ERROR;
+ }
+ return written;
+}
+
+int64_t mz_stream_os_tell(void *stream) {
+ mz_stream_posix *posix = (mz_stream_posix*)stream;
+ int64_t position = ftello64(posix->handle);
+ if (position == -1) {
+ posix->error = errno;
+ return MZ_TELL_ERROR;
+ }
+ return position;
+}
+
+int32_t mz_stream_os_seek(void *stream, int64_t offset, int32_t origin) {
+ mz_stream_posix *posix = (mz_stream_posix*)stream;
+ int32_t fseek_origin = 0;
+
+ switch (origin) {
+ case MZ_SEEK_CUR:
+ fseek_origin = SEEK_CUR;
+ break;
+ case MZ_SEEK_END:
+ fseek_origin = SEEK_END;
+ break;
+ case MZ_SEEK_SET:
+ fseek_origin = SEEK_SET;
+ break;
+ default:
+ return MZ_SEEK_ERROR;
+ }
+
+ if (fseeko64(posix->handle, offset, fseek_origin) != 0) {
+ posix->error = errno;
+ return MZ_SEEK_ERROR;
+ }
+
+ return MZ_OK;
+}
+
+int32_t mz_stream_os_close(void *stream) {
+ mz_stream_posix *posix = (mz_stream_posix*)stream;
+ int32_t closed = 0;
+ if (posix->handle != NULL) {
+ closed = fclose(posix->handle);
+ posix->handle = NULL;
+ }
+ if (closed != 0) {
+ posix->error = errno;
+ return MZ_CLOSE_ERROR;
+ }
+ return MZ_OK;
+}
+
+int32_t mz_stream_os_error(void *stream) {
+ mz_stream_posix *posix = (mz_stream_posix*)stream;
+ return posix->error;
+}
+
+void *mz_stream_os_create(void **stream) {
+ mz_stream_posix *posix = NULL;
+
+ posix = (mz_stream_posix *)MZ_ALLOC(sizeof(mz_stream_posix));
+ if (posix != NULL) {
+ memset(posix, 0, sizeof(mz_stream_posix));
+ posix->stream.vtbl = &mz_stream_os_vtbl;
+ }
+ if (stream != NULL)
+ *stream = posix;
+
+ return posix;
+}
+
+void mz_stream_os_delete(void **stream) {
+ mz_stream_posix *posix = NULL;
+ if (stream == NULL)
+ return;
+ posix = (mz_stream_posix *)*stream;
+ if (posix != NULL)
+ MZ_FREE(posix);
+ *stream = NULL;
+}
+
+void *mz_stream_os_get_interface(void) {
+ return (void *)&mz_stream_os_vtbl;
+}
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_pkcrypt.c b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_pkcrypt.c
new file mode 100644
index 0000000..41c762f
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_pkcrypt.c
@@ -0,0 +1,338 @@
+/* mz_strm_pkcrypt.c -- Code for traditional PKWARE encryption
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+ Copyright (C) 1998-2005 Gilles Vollant
+ Modifications for Info-ZIP crypting
+ https://www.winimage.com/zLibDll/minizip.html
+ Copyright (C) 2003 Terry Thorsen
+
+ This code is a modified version of crypting code in Info-ZIP distribution
+
+ Copyright (C) 1990-2000 Info-ZIP. All rights reserved.
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+
+ This encryption code is a direct transcription of the algorithm from
+ Roger Schlafly, described by Phil Katz in the file appnote.txt. This
+ file (appnote.txt) is distributed with the PKZIP program (even in the
+ version without encryption capabilities).
+*/
+
+
+#include "mz.h"
+#include "mz_crypt.h"
+#include "mz_strm.h"
+#include "mz_strm_pkcrypt.h"
+
+/***************************************************************************/
+
+static mz_stream_vtbl mz_stream_pkcrypt_vtbl = {
+ mz_stream_pkcrypt_open,
+ mz_stream_pkcrypt_is_open,
+ mz_stream_pkcrypt_read,
+ mz_stream_pkcrypt_write,
+ mz_stream_pkcrypt_tell,
+ mz_stream_pkcrypt_seek,
+ mz_stream_pkcrypt_close,
+ mz_stream_pkcrypt_error,
+ mz_stream_pkcrypt_create,
+ mz_stream_pkcrypt_delete,
+ mz_stream_pkcrypt_get_prop_int64,
+ mz_stream_pkcrypt_set_prop_int64
+};
+
+/***************************************************************************/
+
+typedef struct mz_stream_pkcrypt_s {
+ mz_stream stream;
+ int32_t error;
+ int16_t initialized;
+ uint8_t buffer[UINT16_MAX];
+ int64_t total_in;
+ int64_t max_total_in;
+ int64_t total_out;
+ uint32_t keys[3]; /* keys defining the pseudo-random sequence */
+ uint8_t verify1;
+ uint8_t verify2;
+ const char *password;
+} mz_stream_pkcrypt;
+
+/***************************************************************************/
+
+#define mz_stream_pkcrypt_decode(strm, c) \
+ (mz_stream_pkcrypt_update_keys(strm, \
+ c ^= mz_stream_pkcrypt_decrypt_byte(strm)))
+
+#define mz_stream_pkcrypt_encode(strm, c, t) \
+ (t = mz_stream_pkcrypt_decrypt_byte(strm), \
+ mz_stream_pkcrypt_update_keys(strm, (uint8_t)c), (uint8_t)(t^(c)))
+
+/***************************************************************************/
+
+static uint8_t mz_stream_pkcrypt_decrypt_byte(void *stream) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+
+ unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an */
+ /* unpredictable manner on 16-bit systems; not a problem */
+ /* with any known compiler so far, though. */
+
+ temp = pkcrypt->keys[2] | 2;
+ return (uint8_t)(((temp * (temp ^ 1)) >> 8) & 0xff);
+}
+
+static uint8_t mz_stream_pkcrypt_update_keys(void *stream, uint8_t c) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ uint8_t buf = c;
+
+ pkcrypt->keys[0] = (uint32_t)~mz_crypt_crc32_update(~pkcrypt->keys[0], &buf, 1);
+
+ pkcrypt->keys[1] += pkcrypt->keys[0] & 0xff;
+ pkcrypt->keys[1] *= 134775813L;
+ pkcrypt->keys[1] += 1;
+
+ buf = (uint8_t)(pkcrypt->keys[1] >> 24);
+ pkcrypt->keys[2] = (uint32_t)~mz_crypt_crc32_update(~pkcrypt->keys[2], &buf, 1);
+
+ return (uint8_t)c;
+}
+
+static void mz_stream_pkcrypt_init_keys(void *stream, const char *password) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+
+ pkcrypt->keys[0] = 305419896L;
+ pkcrypt->keys[1] = 591751049L;
+ pkcrypt->keys[2] = 878082192L;
+
+ while (*password != 0) {
+ mz_stream_pkcrypt_update_keys(stream, (uint8_t)*password);
+ password += 1;
+ }
+}
+
+/***************************************************************************/
+
+int32_t mz_stream_pkcrypt_open(void *stream, const char *path, int32_t mode) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ uint16_t t = 0;
+ int16_t i = 0;
+ uint8_t verify1 = 0;
+ uint8_t verify2 = 0;
+ uint8_t header[MZ_PKCRYPT_HEADER_SIZE];
+ const char *password = path;
+
+ pkcrypt->total_in = 0;
+ pkcrypt->total_out = 0;
+ pkcrypt->initialized = 0;
+
+ if (mz_stream_is_open(pkcrypt->stream.base) != MZ_OK)
+ return MZ_OPEN_ERROR;
+
+ if (password == NULL)
+ password = pkcrypt->password;
+ if (password == NULL)
+ return MZ_PARAM_ERROR;
+
+ mz_stream_pkcrypt_init_keys(stream, password);
+
+ if (mode & MZ_OPEN_MODE_WRITE) {
+ /* First generate RAND_HEAD_LEN - 2 random bytes. */
+ mz_crypt_rand(header, MZ_PKCRYPT_HEADER_SIZE - 2);
+
+ /* Encrypt random header (last two bytes is high word of crc) */
+ for (i = 0; i < MZ_PKCRYPT_HEADER_SIZE - 2; i++)
+ header[i] = mz_stream_pkcrypt_encode(stream, header[i], t);
+
+ header[i++] = mz_stream_pkcrypt_encode(stream, pkcrypt->verify1, t);
+ header[i++] = mz_stream_pkcrypt_encode(stream, pkcrypt->verify2, t);
+
+ if (mz_stream_write(pkcrypt->stream.base, header, sizeof(header)) != sizeof(header))
+ return MZ_WRITE_ERROR;
+
+ pkcrypt->total_out += MZ_PKCRYPT_HEADER_SIZE;
+ } else if (mode & MZ_OPEN_MODE_READ) {
+ if (mz_stream_read(pkcrypt->stream.base, header, sizeof(header)) != sizeof(header))
+ return MZ_READ_ERROR;
+
+ for (i = 0; i < MZ_PKCRYPT_HEADER_SIZE - 2; i++)
+ header[i] = mz_stream_pkcrypt_decode(stream, header[i]);
+
+ verify1 = mz_stream_pkcrypt_decode(stream, header[i++]);
+ verify2 = mz_stream_pkcrypt_decode(stream, header[i++]);
+
+ /* Older versions used 2 byte check, newer versions use 1 byte check. */
+ MZ_UNUSED(verify1);
+ if ((verify2 != 0) && (verify2 != pkcrypt->verify2))
+ return MZ_PASSWORD_ERROR;
+
+ pkcrypt->total_in += MZ_PKCRYPT_HEADER_SIZE;
+ }
+
+ pkcrypt->initialized = 1;
+ return MZ_OK;
+}
+
+int32_t mz_stream_pkcrypt_is_open(void *stream) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ if (pkcrypt->initialized == 0)
+ return MZ_OPEN_ERROR;
+ return MZ_OK;
+}
+
+int32_t mz_stream_pkcrypt_read(void *stream, void *buf, int32_t size) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ uint8_t *buf_ptr = (uint8_t *)buf;
+ int32_t bytes_to_read = size;
+ int32_t read = 0;
+ int32_t i = 0;
+
+
+ if ((int64_t)bytes_to_read > (pkcrypt->max_total_in - pkcrypt->total_in))
+ bytes_to_read = (int32_t)(pkcrypt->max_total_in - pkcrypt->total_in);
+
+ read = mz_stream_read(pkcrypt->stream.base, buf, bytes_to_read);
+
+ for (i = 0; i < read; i++)
+ buf_ptr[i] = mz_stream_pkcrypt_decode(stream, buf_ptr[i]);
+
+ if (read > 0)
+ pkcrypt->total_in += read;
+
+ return read;
+}
+
+int32_t mz_stream_pkcrypt_write(void *stream, const void *buf, int32_t size) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ const uint8_t *buf_ptr = (const uint8_t *)buf;
+ int32_t bytes_to_write = sizeof(pkcrypt->buffer);
+ int32_t total_written = 0;
+ int32_t written = 0;
+ int32_t i = 0;
+ uint16_t t = 0;
+
+ if (size < 0)
+ return MZ_PARAM_ERROR;
+
+ do {
+ if (bytes_to_write > (size - total_written))
+ bytes_to_write = (size - total_written);
+
+ for (i = 0; i < bytes_to_write; i += 1) {
+ pkcrypt->buffer[i] = mz_stream_pkcrypt_encode(stream, *buf_ptr, t);
+ buf_ptr += 1;
+ }
+
+ written = mz_stream_write(pkcrypt->stream.base, pkcrypt->buffer, bytes_to_write);
+ if (written < 0)
+ return written;
+
+ total_written += written;
+ } while (total_written < size && written > 0);
+
+ pkcrypt->total_out += total_written;
+ return total_written;
+}
+
+int64_t mz_stream_pkcrypt_tell(void *stream) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ return mz_stream_tell(pkcrypt->stream.base);
+}
+
+int32_t mz_stream_pkcrypt_seek(void *stream, int64_t offset, int32_t origin) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ return mz_stream_seek(pkcrypt->stream.base, offset, origin);
+}
+
+int32_t mz_stream_pkcrypt_close(void *stream) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ pkcrypt->initialized = 0;
+ return MZ_OK;
+}
+
+int32_t mz_stream_pkcrypt_error(void *stream) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ return pkcrypt->error;
+}
+
+void mz_stream_pkcrypt_set_password(void *stream, const char *password) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ pkcrypt->password = password;
+}
+
+void mz_stream_pkcrypt_set_verify(void *stream, uint8_t verify1, uint8_t verify2) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ pkcrypt->verify1 = verify1;
+ pkcrypt->verify2 = verify2;
+}
+
+void mz_stream_pkcrypt_get_verify(void *stream, uint8_t *verify1, uint8_t *verify2) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ *verify1 = pkcrypt->verify1;
+ *verify2 = pkcrypt->verify2;
+}
+
+int32_t mz_stream_pkcrypt_get_prop_int64(void *stream, int32_t prop, int64_t *value) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ switch (prop) {
+ case MZ_STREAM_PROP_TOTAL_IN:
+ *value = pkcrypt->total_in;
+ break;
+ case MZ_STREAM_PROP_TOTAL_OUT:
+ *value = pkcrypt->total_out;
+ break;
+ case MZ_STREAM_PROP_TOTAL_IN_MAX:
+ *value = pkcrypt->max_total_in;
+ break;
+ case MZ_STREAM_PROP_HEADER_SIZE:
+ *value = MZ_PKCRYPT_HEADER_SIZE;
+ break;
+ case MZ_STREAM_PROP_FOOTER_SIZE:
+ *value = 0;
+ break;
+ default:
+ return MZ_EXIST_ERROR;
+ }
+ return MZ_OK;
+}
+
+int32_t mz_stream_pkcrypt_set_prop_int64(void *stream, int32_t prop, int64_t value) {
+ mz_stream_pkcrypt *pkcrypt = (mz_stream_pkcrypt *)stream;
+ switch (prop) {
+ case MZ_STREAM_PROP_TOTAL_IN_MAX:
+ pkcrypt->max_total_in = value;
+ break;
+ default:
+ return MZ_EXIST_ERROR;
+ }
+ return MZ_OK;
+}
+
+void *mz_stream_pkcrypt_create(void **stream) {
+ mz_stream_pkcrypt *pkcrypt = NULL;
+
+ pkcrypt = (mz_stream_pkcrypt *)MZ_ALLOC(sizeof(mz_stream_pkcrypt));
+ if (pkcrypt != NULL) {
+ memset(pkcrypt, 0, sizeof(mz_stream_pkcrypt));
+ pkcrypt->stream.vtbl = &mz_stream_pkcrypt_vtbl;
+ }
+
+ if (stream != NULL)
+ *stream = pkcrypt;
+ return pkcrypt;
+}
+
+void mz_stream_pkcrypt_delete(void **stream) {
+ mz_stream_pkcrypt *pkcrypt = NULL;
+ if (stream == NULL)
+ return;
+ pkcrypt = (mz_stream_pkcrypt *)*stream;
+ if (pkcrypt != NULL)
+ MZ_FREE(pkcrypt);
+ *stream = NULL;
+}
+
+void *mz_stream_pkcrypt_get_interface(void) {
+ return (void *)&mz_stream_pkcrypt_vtbl;
+}
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_pkcrypt.h b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_pkcrypt.h
new file mode 100644
index 0000000..453f1f9
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_pkcrypt.h
@@ -0,0 +1,46 @@
+/* mz_strm_pkcrypt.h -- Code for traditional PKWARE encryption
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+#ifndef MZ_STREAM_PKCRYPT_H
+#define MZ_STREAM_PKCRYPT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************/
+
+int32_t mz_stream_pkcrypt_open(void *stream, const char *filename, int32_t mode);
+int32_t mz_stream_pkcrypt_is_open(void *stream);
+int32_t mz_stream_pkcrypt_read(void *stream, void *buf, int32_t size);
+int32_t mz_stream_pkcrypt_write(void *stream, const void *buf, int32_t size);
+int64_t mz_stream_pkcrypt_tell(void *stream);
+int32_t mz_stream_pkcrypt_seek(void *stream, int64_t offset, int32_t origin);
+int32_t mz_stream_pkcrypt_close(void *stream);
+int32_t mz_stream_pkcrypt_error(void *stream);
+
+void mz_stream_pkcrypt_set_password(void *stream, const char *password);
+void mz_stream_pkcrypt_set_verify(void *stream, uint8_t verify1, uint8_t verify2);
+void mz_stream_pkcrypt_get_verify(void *stream, uint8_t *verify1, uint8_t *verify2);
+int32_t mz_stream_pkcrypt_get_prop_int64(void *stream, int32_t prop, int64_t *value);
+int32_t mz_stream_pkcrypt_set_prop_int64(void *stream, int32_t prop, int64_t value);
+
+void* mz_stream_pkcrypt_create(void **stream);
+void mz_stream_pkcrypt_delete(void **stream);
+
+void* mz_stream_pkcrypt_get_interface(void);
+
+/***************************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_split.c b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_split.c
new file mode 100644
index 0000000..12c8bda
--- /dev/null
+++ b/example/ios/Pods/SSZipArchive/SSZipArchive/minizip/mz_strm_split.c
@@ -0,0 +1,438 @@
+/* mz_strm_split.c -- Stream for split files
+ part of the minizip-ng project
+
+ Copyright (C) 2010-2021 Nathan Moinvaziri
+ https://github.com/zlib-ng/minizip-ng
+
+ This program is distributed under the terms of the same license as zlib.
+ See the accompanying LICENSE file for the full text of the license.
+*/
+
+
+#include "mz.h"
+#include "mz_os.h"
+#include "mz_strm.h"
+#include "mz_strm_split.h"
+
+#include