diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 1e93f24d..2f724106 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -1,17 +1,17 @@
-
+
-
+
-
+
-
-
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index febbc86b..bfddde93 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -11,6 +11,7 @@
+
@@ -26,6 +27,7 @@
+
diff --git a/.safedk/hashes.safedk b/.safedk/hashes.safedk
index 0d71384b..238f9084 100644
--- a/.safedk/hashes.safedk
+++ b/.safedk/hashes.safedk
@@ -1,3 +1,3 @@
-#Wed Jan 04 13:50:34 PKT 2023
-\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000=
-json=1038193561
+#Sat Jan 07 01:54:37 PKT 2023
+\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000=
+json=-1619911513
diff --git a/.safedk/plugin.properties b/.safedk/plugin.properties
index 9e8d765a..8a8041fa 100644
--- a/.safedk/plugin.properties
+++ b/.safedk/plugin.properties
@@ -1,5 +1,5 @@
#
-#Wed Jan 04 13:50:34 PKT 2023
+#Sat Jan 07 02:11:23 PKT 2023
\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000=
sdk_analysis_plugin_version=4.8.2
set_multidex=true
diff --git a/OrbotLib/OrbotLib.aar b/OrbotLib/OrbotLib.aar
new file mode 100644
index 00000000..6d765bf8
Binary files /dev/null and b/OrbotLib/OrbotLib.aar differ
diff --git a/OrbotLib/build.gradle b/OrbotLib/build.gradle
new file mode 100644
index 00000000..013c3e9f
--- /dev/null
+++ b/OrbotLib/build.gradle
@@ -0,0 +1,2 @@
+configurations.maybeCreate("default")
+artifacts.add("default",file('OrbotLib.aar'))
diff --git a/OrbotLib/build/.transforms/083f70b59baf8086f2251649746ee00d/results.bin b/OrbotLib/build/.transforms/083f70b59baf8086f2251649746ee00d/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/OrbotLib/build/.transforms/131c5c2eaa4d18ec3243e00d5f0c3e7e/results.bin b/OrbotLib/build/.transforms/131c5c2eaa4d18ec3243e00d5f0c3e7e/results.bin
new file mode 100644
index 00000000..a23ff11c
--- /dev/null
+++ b/OrbotLib/build/.transforms/131c5c2eaa4d18ec3243e00d5f0c3e7e/results.bin
@@ -0,0 +1 @@
+o/jetified-OrbotLib-runtime.jar
diff --git a/OrbotLib/build/.transforms/131c5c2eaa4d18ec3243e00d5f0c3e7e/transformed/jetified-OrbotLib-runtime.jar b/OrbotLib/build/.transforms/131c5c2eaa4d18ec3243e00d5f0c3e7e/transformed/jetified-OrbotLib-runtime.jar
new file mode 100644
index 00000000..cd21e497
Binary files /dev/null and b/OrbotLib/build/.transforms/131c5c2eaa4d18ec3243e00d5f0c3e7e/transformed/jetified-OrbotLib-runtime.jar differ
diff --git a/OrbotLib/build/.transforms/132e4f62a3c7a8d37f2fbc2464c53f06/results.bin b/OrbotLib/build/.transforms/132e4f62a3c7a8d37f2fbc2464c53f06/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/OrbotLib/build/.transforms/135c22ba7cb84ea5adbac19d045a9bba/results.bin b/OrbotLib/build/.transforms/135c22ba7cb84ea5adbac19d045a9bba/results.bin
new file mode 100644
index 00000000..199366a7
--- /dev/null
+++ b/OrbotLib/build/.transforms/135c22ba7cb84ea5adbac19d045a9bba/results.bin
@@ -0,0 +1 @@
+i/jni
diff --git a/OrbotLib/build/.transforms/32c1a8bb84e7d797e51466c001130cb3/results.bin b/OrbotLib/build/.transforms/32c1a8bb84e7d797e51466c001130cb3/results.bin
new file mode 100644
index 00000000..1534a05f
--- /dev/null
+++ b/OrbotLib/build/.transforms/32c1a8bb84e7d797e51466c001130cb3/results.bin
@@ -0,0 +1 @@
+o/jetified-OrbotLib.aar
diff --git a/OrbotLib/build/.transforms/32c1a8bb84e7d797e51466c001130cb3/transformed/jetified-OrbotLib.aar b/OrbotLib/build/.transforms/32c1a8bb84e7d797e51466c001130cb3/transformed/jetified-OrbotLib.aar
new file mode 100644
index 00000000..6d765bf8
Binary files /dev/null and b/OrbotLib/build/.transforms/32c1a8bb84e7d797e51466c001130cb3/transformed/jetified-OrbotLib.aar differ
diff --git a/OrbotLib/build/.transforms/337f0e0431af6a8d96db942f580285b3/results.bin b/OrbotLib/build/.transforms/337f0e0431af6a8d96db942f580285b3/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/OrbotLib/build/.transforms/3ccb5eb352ce105c2276330c0440addd/results.bin b/OrbotLib/build/.transforms/3ccb5eb352ce105c2276330c0440addd/results.bin
new file mode 100644
index 00000000..edee272f
--- /dev/null
+++ b/OrbotLib/build/.transforms/3ccb5eb352ce105c2276330c0440addd/results.bin
@@ -0,0 +1 @@
+o/go.IPtProxy.gojni
diff --git a/OrbotLib/build/.transforms/407119c23894a6b9fa709fbe177d6ff1/results.bin b/OrbotLib/build/.transforms/407119c23894a6b9fa709fbe177d6ff1/results.bin
new file mode 100644
index 00000000..2de4c85c
--- /dev/null
+++ b/OrbotLib/build/.transforms/407119c23894a6b9fa709fbe177d6ff1/results.bin
@@ -0,0 +1 @@
+o/jetified-OrbotLib-runtime
diff --git a/OrbotLib/build/.transforms/407119c23894a6b9fa709fbe177d6ff1/transformed/jetified-OrbotLib-runtime/classes.dex b/OrbotLib/build/.transforms/407119c23894a6b9fa709fbe177d6ff1/transformed/jetified-OrbotLib-runtime/classes.dex
new file mode 100644
index 00000000..74cc7b41
Binary files /dev/null and b/OrbotLib/build/.transforms/407119c23894a6b9fa709fbe177d6ff1/transformed/jetified-OrbotLib-runtime/classes.dex differ
diff --git a/OrbotLib/build/.transforms/49434467c55899fbefab24fcbe1d3b51/results.bin b/OrbotLib/build/.transforms/49434467c55899fbefab24fcbe1d3b51/results.bin
new file mode 100644
index 00000000..fcbf8d4b
--- /dev/null
+++ b/OrbotLib/build/.transforms/49434467c55899fbefab24fcbe1d3b51/results.bin
@@ -0,0 +1 @@
+i/AndroidManifest.xml
diff --git a/OrbotLib/build/.transforms/6469777528cea869d128a6c6a77c44f3/results.bin b/OrbotLib/build/.transforms/6469777528cea869d128a6c6a77c44f3/results.bin
new file mode 100644
index 00000000..c223d3ee
--- /dev/null
+++ b/OrbotLib/build/.transforms/6469777528cea869d128a6c6a77c44f3/results.bin
@@ -0,0 +1 @@
+o/go.IPtProxy.gojni-r.txt
diff --git a/OrbotLib/build/.transforms/6469777528cea869d128a6c6a77c44f3/transformed/go.IPtProxy.gojni-r.txt b/OrbotLib/build/.transforms/6469777528cea869d128a6c6a77c44f3/transformed/go.IPtProxy.gojni-r.txt
new file mode 100644
index 00000000..b1fb4ac4
--- /dev/null
+++ b/OrbotLib/build/.transforms/6469777528cea869d128a6c6a77c44f3/transformed/go.IPtProxy.gojni-r.txt
@@ -0,0 +1 @@
+go.IPtProxy.gojni
diff --git a/OrbotLib/build/.transforms/87740a7d2777881e2d14618adeae98aa/results.bin b/OrbotLib/build/.transforms/87740a7d2777881e2d14618adeae98aa/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/OrbotLib/build/.transforms/883d02d6607593941a8cf69efa4e5388/results.bin b/OrbotLib/build/.transforms/883d02d6607593941a8cf69efa4e5388/results.bin
new file mode 100644
index 00000000..c626d1be
--- /dev/null
+++ b/OrbotLib/build/.transforms/883d02d6607593941a8cf69efa4e5388/results.bin
@@ -0,0 +1 @@
+i/jars/classes.jar
diff --git a/OrbotLib/build/.transforms/897a11f435d734153d5dddea786c0a33/results.bin b/OrbotLib/build/.transforms/897a11f435d734153d5dddea786c0a33/results.bin
new file mode 100644
index 00000000..1ed65e03
--- /dev/null
+++ b/OrbotLib/build/.transforms/897a11f435d734153d5dddea786c0a33/results.bin
@@ -0,0 +1 @@
+i/
diff --git a/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/results.bin b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/results.bin
new file mode 100644
index 00000000..7e49bd13
--- /dev/null
+++ b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/results.bin
@@ -0,0 +1 @@
+o/jetified-OrbotLib
diff --git a/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/AndroidManifest.xml b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/AndroidManifest.xml
new file mode 100644
index 00000000..e49023a2
--- /dev/null
+++ b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/R.txt b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/R.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jars/classes.jar b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jars/classes.jar
new file mode 100644
index 00000000..17717f50
Binary files /dev/null and b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jars/classes.jar differ
diff --git a/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jni/arm64-v8a/libgojni.so b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jni/arm64-v8a/libgojni.so
new file mode 100644
index 00000000..0a8cc26d
Binary files /dev/null and b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jni/arm64-v8a/libgojni.so differ
diff --git a/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jni/armeabi-v7a/libgojni.so b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jni/armeabi-v7a/libgojni.so
new file mode 100644
index 00000000..e6f143e0
Binary files /dev/null and b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jni/armeabi-v7a/libgojni.so differ
diff --git a/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jni/x86/libgojni.so b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jni/x86/libgojni.so
new file mode 100644
index 00000000..4ba9983f
Binary files /dev/null and b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jni/x86/libgojni.so differ
diff --git a/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jni/x86_64/libgojni.so b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jni/x86_64/libgojni.so
new file mode 100644
index 00000000..c513e6f6
Binary files /dev/null and b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/jni/x86_64/libgojni.so differ
diff --git a/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/proguard.txt b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/proguard.txt
new file mode 100644
index 00000000..3951a009
--- /dev/null
+++ b/OrbotLib/build/.transforms/91211826d38e593f8c26b7f8f1d3c57e/transformed/jetified-OrbotLib/proguard.txt
@@ -0,0 +1,2 @@
+-keep class go.** { *; }
+-keep class IPtProxy.** { *; }
diff --git a/OrbotLib/build/.transforms/91faf0ee7f0b4edce21b91470dfea6c4/results.bin b/OrbotLib/build/.transforms/91faf0ee7f0b4edce21b91470dfea6c4/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/OrbotLib/build/.transforms/a2aa74b28de26a2beae702ce91c5f32f/results.bin b/OrbotLib/build/.transforms/a2aa74b28de26a2beae702ce91c5f32f/results.bin
new file mode 100644
index 00000000..2de4c85c
--- /dev/null
+++ b/OrbotLib/build/.transforms/a2aa74b28de26a2beae702ce91c5f32f/results.bin
@@ -0,0 +1 @@
+o/jetified-OrbotLib-runtime
diff --git a/OrbotLib/build/.transforms/a2aa74b28de26a2beae702ce91c5f32f/transformed/jetified-OrbotLib-runtime/classes.dex b/OrbotLib/build/.transforms/a2aa74b28de26a2beae702ce91c5f32f/transformed/jetified-OrbotLib-runtime/classes.dex
new file mode 100644
index 00000000..666987c6
Binary files /dev/null and b/OrbotLib/build/.transforms/a2aa74b28de26a2beae702ce91c5f32f/transformed/jetified-OrbotLib-runtime/classes.dex differ
diff --git a/OrbotLib/build/.transforms/a93451063254821c863dc70f23265afa/results.bin b/OrbotLib/build/.transforms/a93451063254821c863dc70f23265afa/results.bin
new file mode 100644
index 00000000..c656f472
--- /dev/null
+++ b/OrbotLib/build/.transforms/a93451063254821c863dc70f23265afa/results.bin
@@ -0,0 +1 @@
+o/jetified-OrbotLib-api.jar
diff --git a/OrbotLib/build/.transforms/a93451063254821c863dc70f23265afa/transformed/jetified-OrbotLib-api.jar b/OrbotLib/build/.transforms/a93451063254821c863dc70f23265afa/transformed/jetified-OrbotLib-api.jar
new file mode 100644
index 00000000..8a68ee23
Binary files /dev/null and b/OrbotLib/build/.transforms/a93451063254821c863dc70f23265afa/transformed/jetified-OrbotLib-api.jar differ
diff --git a/OrbotLib/build/.transforms/e9dad1405379d869f9ebdaeb39cb7d49/results.bin b/OrbotLib/build/.transforms/e9dad1405379d869f9ebdaeb39cb7d49/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/OrbotLib/build/.transforms/fe267ee8305f5a065b1049dc1c0c7791/results.bin b/OrbotLib/build/.transforms/fe267ee8305f5a065b1049dc1c0c7791/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/app/build.gradle b/app/build.gradle
index 1e1e6a47..691fcdd5 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -92,11 +92,12 @@ dependencies {
/* Firefox ABI Splits */
- implementation "org.mozilla.components:browser-engine-gecko:100.0.20220327143103"
- implementation "org.mozilla.components:browser-icons:100.0.20220327143103"
- implementation "org.mozilla.components:concept-fetch:100.0.20220327143103"
- implementation "org.mozilla.components:concept-base:100.0.20220327143103"
- implementation "org.mozilla.components:support-utils:100.0.20220327143103"
+ implementation "org.mozilla.components:browser-engine-gecko:108.2.0"
+ implementation "org.mozilla.components:browser-icons:108.2.0"
+ implementation "org.mozilla.components:concept-fetch:108.2.0"
+ implementation "org.mozilla.components:concept-base:108.2.0"
+ implementation "org.mozilla.components:support-utils:108.2.0"
+
/* Analytics */
diff --git a/app/src/main/assets/geckoview-config-noimage.yaml b/app/src/main/assets/geckoview-config-noimage.yaml
index d47b6970..49dbd691 100755
--- a/app/src/main/assets/geckoview-config-noimage.yaml
+++ b/app/src/main/assets/geckoview-config-noimage.yaml
@@ -10,6 +10,7 @@ prefs:
# network.proxy.socks_port: 9050
network.proxy.socks_version: 5
network.proxy.socks_remote_dns: true
+ permissions.webRequestBlocking: 1
permissions.default.image: 2
browser.display.show_image_placeholders: true
browser.cache.disk.enable: false
diff --git a/app/src/main/assets/geckoview-config.yaml b/app/src/main/assets/geckoview-config.yaml
index 4fd00b09..d388c1cd 100755
--- a/app/src/main/assets/geckoview-config.yaml
+++ b/app/src/main/assets/geckoview-config.yaml
@@ -11,6 +11,7 @@ prefs:
network.proxy.socks_version: 5
network.proxy.socks_remote_dns: true
permissions.default.image: 1
+ permissions.webRequestBlocking: 1
browser.display.show_image_placeholders: true
browser.cache.disk.enable: false
browser.cache.memory.enable: true
diff --git a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/extendedGeckoView.java b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/extendedGeckoView.java
index 60e78a34..894dc5b4 100644
--- a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/extendedGeckoView.java
+++ b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/extendedGeckoView.java
@@ -40,6 +40,7 @@ import android.view.DisplayCutout;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.Surface;
+import android.view.SurfaceControl;
import android.view.SurfaceView;
import android.view.TextureView;
import android.view.View;
@@ -99,8 +100,8 @@ public class extendedGeckoView extends GeckoView {
onGlobalLayout();
if (extendedGeckoView.this.mSurfaceWrapper != null) {
final SurfaceViewWrapper wrapper = extendedGeckoView.this.mSurfaceWrapper;
- mDisplay.surfaceChanged(wrapper.getSurface(),
- wrapper.getWidth(), wrapper.getHeight());
+
+ mDisplay.surfaceChanged(new GeckoDisplay.SurfaceInfo.Builder(wrapper.getSurface()).build());
mDisplay.setDynamicToolbarMaxHeight(mDynamicToolbarMaxHeight);
extendedGeckoView.this.setActive(true);
}
@@ -119,17 +120,18 @@ public class extendedGeckoView extends GeckoView {
return display;
}
- @Override // SurfaceListener
- public void onSurfaceChanged(final Surface surface,
- final int width, final int height) {
+
+ @Override
+ public void onSurfaceChanged(Surface surface, SurfaceControl surfaceControl, int width, int height) {
if (mDisplay != null) {
- mDisplay.surfaceChanged(surface, width, height);
+ mDisplay.surfaceChanged(new GeckoDisplay.SurfaceInfo.Builder(surface).build());
mDisplay.setDynamicToolbarMaxHeight(mDynamicToolbarMaxHeight);
if (!mValid) {
extendedGeckoView.this.setActive(true);
}
}
mValid = true;
+
}
@Override // SurfaceListener
@@ -731,7 +733,7 @@ public class extendedGeckoView extends GeckoView {
strValues.put(values.keyAt(i), value.getTextValue());
}
}
- mSession.autofill(strValues);
+ mSession.getAutofillSession().autofill(strValues);
}
/**
@@ -797,43 +799,35 @@ public class extendedGeckoView extends GeckoView {
}
@Override
- public void onAutofill(@NonNull final GeckoSession session,
- final int notification,
- final Autofill.Node node) {
- ThreadUtils.assertOnUiThread();
- if (Build.VERSION.SDK_INT < 26) {
- return;
+ public void onNodeUpdate(
+ @NonNull final GeckoSession session,
+ @NonNull final Autofill.Node node,
+ @NonNull final Autofill.NodeData data) {
+
+ final AutofillManager manager;
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
+ manager = extendedGeckoView.this.getContext().getSystemService(AutofillManager.class);
+ if (manager == null) {
+ return;
+ }
+ manager.notifyViewEntered(extendedGeckoView.this, data.getId(),displayRectForId(session, node));
}
- final AutofillManager manager =
- extendedGeckoView.this.getContext().getSystemService(AutofillManager.class);
- if (manager == null) {
- return;
- }
+ }
- switch (notification) {
- case Autofill.Notify.SESSION_STARTED:
- // This line seems necessary for auto-fill to work on the initial page.
- case Autofill.Notify.SESSION_CANCELED:
- manager.cancel();
- break;
- case Autofill.Notify.SESSION_COMMITTED:
- manager.commit();
- break;
- case Autofill.Notify.NODE_FOCUSED:
- manager.notifyViewEntered(
- extendedGeckoView.this, node.getId(),
- displayRectForId(session, node));
- break;
- case Autofill.Notify.NODE_BLURRED:
- manager.notifyViewExited(extendedGeckoView.this, node.getId());
- break;
- case Autofill.Notify.NODE_UPDATED:
- manager.notifyValueChanged(
- extendedGeckoView.this,
- node.getId(),
- AutofillValue.forText(node.getValue()));
- break;
+ @Override
+ public void onNodeFocus(
+ @NonNull final GeckoSession session,
+ @NonNull final Autofill.Node node,
+ @NonNull final Autofill.NodeData data) {
+
+ final AutofillManager manager;
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
+ manager = extendedGeckoView.this.getContext().getSystemService(AutofillManager.class);
+ if (manager == null) {
+ return;
+ }
+ manager.notifyViewEntered(extendedGeckoView.this, data.getId(),displayRectForId(session, node));
}
}
}
diff --git a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoClients.java b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoClients.java
index 6c723e73..c1ff6ffb 100644
--- a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoClients.java
+++ b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoClients.java
@@ -1,10 +1,16 @@
package com.hiddenservices.onionservices.appManager.homeManager.geckoManager;
+import static android.content.Context.ACTIVITY_SERVICE;
+
import android.annotation.SuppressLint;
+import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
+import android.os.Debug;
+import android.os.Environment;
import android.os.Handler;
+import android.os.StatFs;
import android.util.Log;
import android.widget.ImageView;
@@ -21,10 +27,16 @@ import com.hiddenservices.onionservices.dataManager.dataEnums;
import com.hiddenservices.onionservices.eventObserver;
import com.hiddenservices.onionservices.helperManager.helperMethod;
+import java.io.BufferedReader;
+import java.io.Closeable;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.List;
@@ -46,12 +58,14 @@ import static org.mozilla.geckoview.StorageController.ClearFlags.SITE_SETTINGS;
import org.json.JSONObject;
import org.mozilla.gecko.EventDispatcher;
+import org.mozilla.gecko.util.DebugConfig;
import org.mozilla.gecko.util.GeckoBundle;
import org.mozilla.geckoview.ContentBlocking;
import org.mozilla.geckoview.GeckoResult;
import org.mozilla.geckoview.GeckoRuntime;
import org.mozilla.geckoview.GeckoRuntimeSettings;
import org.mozilla.geckoview.GeckoView;
+import org.mozilla.geckoview.RuntimeSettings;
import org.mozilla.geckoview.WebExtension;
import org.mozilla.geckoview.WebResponse;
import org.torproject.android.service.wrapper.orbotLocalConstants;
@@ -178,7 +192,9 @@ public class geckoClients {
public String getAssetsCacheFile(Context context, String fileName) {
- File cacheFile = new File(context.getCacheDir(), fileName);
+
+ File cacheFile = null;
+ cacheFile = new File(context.getExternalCacheDir(), fileName + helperMethod.createRandomID());
try {
try (InputStream inputStream = context.getAssets().open(fileName)) {
try (FileOutputStream outputStream = new FileOutputStream(cacheFile)) {
@@ -194,19 +210,23 @@ public class geckoClients {
}
String mYAML = helperMethod.readFromFile(cacheFile.getPath());
- if (status.sTorBrowsing) {
- mYAML = mYAML.replace("# network.proxy.socks: \"127.0.0.1\"", "network.proxy.socks: \"127.0.0.1\"");
- mYAML = mYAML.replace("# network.proxy.socks_port: 9050", "network.proxy.socks_port: 9050");
- mYAML = mYAML.replace("browser.cache.memory.enable: true", "browser.cache.memory.enable: true");
+ try {
+ if (status.sTorBrowsing) {
+ mYAML = mYAML.replace("# network.proxy.socks: \"127.0.0.1\"", "network.proxy.socks: \"127.0.0.1\"");
+ mYAML = mYAML.replace("# network.proxy.socks_port: 9050", "network.proxy.socks_port: 9050");
+ mYAML = mYAML.replace("browser.cache.memory.enable: true", "browser.cache.memory.enable: true");
- StringBuilder buf = new StringBuilder(mYAML);
- int portIndex = mYAML.indexOf("network.proxy.socks_port");
- int breakIndex = mYAML.indexOf("\n", portIndex);
- mYAML = buf.replace(portIndex, breakIndex, "network.proxy.socks_port: " + orbotLocalConstants.mSOCKSPort).toString();
- helperMethod.writeToFile(cacheFile.getPath(), mYAML);
- } else {
- mYAML = mYAML.replace("browser.cache.memory.enable: true", "browser.cache.memory.enable: false");
- helperMethod.writeToFile(cacheFile.getPath(), mYAML);
+ StringBuilder buf = new StringBuilder(mYAML);
+ int portIndex = mYAML.indexOf("network.proxy.socks_port");
+ int breakIndex = mYAML.indexOf("\n", portIndex);
+ mYAML = buf.replace(portIndex, breakIndex, "network.proxy.socks_port: " + orbotLocalConstants.mSOCKSPort).toString();
+ helperMethod.writeToFile(cacheFile.getPath(), mYAML);
+ } else {
+ mYAML = mYAML.replace("browser.cache.memory.enable: true", "browser.cache.memory.enable: false");
+ helperMethod.writeToFile(cacheFile.getPath(), mYAML);
+ }
+ }catch (Exception ex){
+ Log.i("ads","dsadas");
}
return cacheFile.getAbsolutePath();
@@ -333,8 +353,37 @@ public class geckoClients {
}
}
+ public String getFileContent( FileInputStream fis ) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ Reader r = new InputStreamReader(fis, "UTF-8"); //or whatever encoding
+ int ch = r.read();
+ while(ch >= 0) {
+ sb.append(ch);
+ ch = r.read();
+ }
+ return sb.toString();
+ }
+
+ public void getAvailableSpaceInBytes(AppCompatActivity context) {
+ ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
+ ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
+ activityManager.getMemoryInfo(mi);
+ long availableMegs = mi.availMem / 1048576L;
+
+
+ try {
+ //File cacheFile = new File(context.getDataDir(), "lib/x86/libxul.so");
+
+ //final FileInputStream fileInputStream = new FileInputStream(cacheFile);
+ //getFileContent(fileInputStream);
+ } catch (Exception ex) {
+ Log.i("","");
+ }
+
+ }
@SuppressLint("WrongConstant")
public void initRuntimeSettings(AppCompatActivity context) {
+
if (mRuntime == null) {
GeckoRuntimeSettings.Builder mSettings = new GeckoRuntimeSettings.Builder();
if (status.sShowImages == 2) {
@@ -342,9 +391,9 @@ public class geckoClients {
} else {
mSettings.configFilePath(getAssetsCacheFile(context, "geckoview-config.yaml"));
}
- mSettings.build();
-
- mRuntime = GeckoRuntime.create(context, mSettings.build());
+ getAvailableSpaceInBytes(context);
+ GeckoRuntimeSettings xx = mSettings.build();
+ mRuntime = GeckoRuntime.create(context, xx);
mRuntime.getSettings().setRemoteDebuggingEnabled(true);
mCreated = true;
diff --git a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoSession.java b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoSession.java
index ac9a1a93..c814f4ac 100644
--- a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoSession.java
+++ b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoSession.java
@@ -413,47 +413,39 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
}
@Override
- public void onAutofill(@NonNull final GeckoSession session,
- final int notification,
- final Autofill.Node node) {
- ThreadUtils.assertOnUiThread();
- if (Build.VERSION.SDK_INT < 26) {
- return;
+ public void onNodeUpdate(
+ @NonNull final GeckoSession session,
+ @NonNull final Autofill.Node node,
+ @NonNull final Autofill.NodeData data) {
+
+ final AutofillManager manager;
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
+ manager = mGeckoView.getContext().getSystemService(AutofillManager.class);
+ if (manager == null) {
+ return;
+ }
+ manager.notifyViewEntered(mGeckoView, data.getId(),displayRectForId(session, node));
}
- final AutofillManager manager =
- mContext.get().getApplicationContext().getSystemService(AutofillManager.class);
- if (manager == null) {
- return;
- }
+ }
- switch (notification) {
- case Autofill.Notify.SESSION_STARTED:
- case Autofill.Notify.SESSION_CANCELED:
- manager.cancel();
- break;
- case Autofill.Notify.SESSION_COMMITTED:
- manager.commit();
- break;
- case Autofill.Notify.NODE_FOCUSED:
- manager.notifyViewEntered(
- mGeckoView, node.getId(),
- displayRectForId(session, node));
- break;
- case Autofill.Notify.NODE_BLURRED:
- manager.notifyViewExited(mGeckoView, node.getId());
- break;
- case Autofill.Notify.NODE_UPDATED:
- manager.notifyValueChanged(
- mGeckoView,
- node.getId(),
- AutofillValue.forText(node.getValue()));
- break;
- case Autofill.Notify.NODE_ADDED:
- case Autofill.Notify.NODE_REMOVED:
- break;
+ @Override
+ public void onNodeFocus(
+ @NonNull final GeckoSession session,
+ @NonNull final Autofill.Node node,
+ @NonNull final Autofill.NodeData data) {
+
+ final AutofillManager manager;
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
+ manager = mGeckoView.getContext().getSystemService(AutofillManager.class);
+ if (manager == null) {
+ return;
+ }
+ manager.notifyViewEntered(mGeckoView, data.getId(),displayRectForId(session, node));
}
}
+
+
}
/*Progress Delegate*/
diff --git a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeController.java b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeController.java
index fd2e0efb..f7b9c307 100644
--- a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeController.java
+++ b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeController.java
@@ -108,6 +108,9 @@ import org.torproject.android.service.util.Prefs;
import org.torproject.android.service.wrapper.LocaleHelper;
import org.torproject.android.service.wrapper.orbotLocalConstants;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -235,7 +238,6 @@ public class homeController extends AppCompatActivity implements ComponentCallba
onInitBooleans();
orbotLocalConstants.mHomeIntent = getIntent();
-
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
pluginController.getInstance().preInitialize(this);
dataController.getInstance().initialize(this);
@@ -910,11 +912,11 @@ public class homeController extends AppCompatActivity implements ComponentCallba
if (SDK_INT >= Build.VERSION_CODES.O)
{
- //String channelId = "default_home_notification";
- //NotificationChannel channel = new NotificationChannel(channelId, "default_home_notification", NotificationManager.IMPORTANCE_DEFAULT);
- //channel.setSound(null, null);
- //manager.createNotificationChannel(channel);
- //builder.setChannelId(channelId);
+ String channelId = "default_home_notification";
+ NotificationChannel channel = new NotificationChannel(channelId, "default_home_notification", NotificationManager.IMPORTANCE_DEFAULT);
+ channel.setSound(null, null);
+ manager.createNotificationChannel(channel);
+ builder.setChannelId(channelId);
}
Intent intentActionOpen = new Intent(context,homeController.class);
@@ -2016,15 +2018,18 @@ public class homeController extends AppCompatActivity implements ComponentCallba
if (!status.sTorBrowsing) {
mDelay = 0;
}
- new Handler().postDelayed(() ->
- {
- pluginController.getInstance().onOrbotInvoke(Arrays.asList(status.sBridgeCustomBridge, status.sBridgeGatewayManual, status.sBridgeCustomType, status.sBridgeStatus, status.sShowImages, status.sClearOnExit, dataController.getInstance().invokeBridges(dataEnums.eBridgeWebsiteCommands.M_FETCH, null)), pluginEnums.eOrbotManager.M_START_ORBOT);
- onInvokeProxyLoading();
- onShowDefaultNotification();
- }, mDelay);
+
+ pluginController.getInstance().onOrbotInvoke(Arrays.asList(status.sBridgeCustomBridge, status.sBridgeGatewayManual, status.sBridgeCustomType, status.sBridgeStatus, status.sShowImages, status.sClearOnExit, dataController.getInstance().invokeBridges(dataEnums.eBridgeWebsiteCommands.M_FETCH, null)), pluginEnums.eOrbotManager.M_START_ORBOT);
+ onInvokeProxyLoading();
+ onShowDefaultNotification();
+ //new Handler().postDelayed(() ->
+ //{
+ //}, mDelay);
+
}
public void onStartApplication(View view) {
+ mGeckoClient.initRuntimeSettings(this);
onStartBrowser();
int notificationStatus = status.sBridgeNotificationManual;
if (notificationStatus == 0) {
@@ -2041,6 +2046,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
public void onStartApplicationNoTor(View view) {
status.sTorBrowsing = false;
status.sNoTorTriggered = true;
+ mGeckoClient.initRuntimeSettings(this);
if(status.sSettingDefaultSearchEngine.equals(constants.CONST_BACKEND_GENESIS_URL)){
status.sSettingDefaultSearchEngine = constants.CONST_BACKEND_DUCK_DUCK_GO_URL;
}
diff --git a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeViewController.java b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeViewController.java
index 92475046..b7e4e30f 100644
--- a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeViewController.java
+++ b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeViewController.java
@@ -168,7 +168,6 @@ class homeViewController {
this.mPanicButton = pPanicButton;
this.mGenesisLogo = pGenesisLogo;
this.mPanicButtonLandscape = pPanicButtonLandscape;
- this.mLogHandler = new LogHandler();
this.mTorDisabled = pTorDisabled;
initSplashScreen();
@@ -633,68 +632,63 @@ class homeViewController {
}
}
- private LogHandler mLogHandler;
-
- @SuppressLint("StaticFieldLeak")
- class LogHandler extends AsyncTask {
- protected Void doInBackground(Void... arg0) {
- AppCompatActivity temp_context = mContext;
- int mCounter = 0;
- while (status.sTorBrowsing && (orbotLocalConstants.mSOCKSPort == -1 || !orbotLocalConstants.mIsTorInitialized || !orbotLocalConstants.mNetworkState)) {
- try {
- boolean mFastConnect = status.sSettingIsAppStarted || !status.sRestoreTabs && status.sAppInstalled && status.sSettingDefaultSearchEngine.equals(constants.CONST_BACKEND_GENESIS_URL) && !status.sBridgeStatus && status.sExternalWebsite.equals(strings.GENERIC_EMPTY_STR);
- if (mFastConnect) {
- sleep(1000);
- if (orbotLocalConstants.mNetworkState) {
- orbotLocalConstants.mTorLogsStatus = "Starting Orion | Please Wait ...";
- mEvent.invokeObserver(Collections.singletonList(status.sSettingDefaultSearchEngine), enums.etype.recheck_orbot);
- startPostTask(messages.MESSAGE_UPDATE_LOADING_TEXT);
- if (orbotLocalConstants.mSOCKSPort != -1) {
- break;
+ public void LogHandler() {
+ new Thread(){
+ public void run(){
+ AppCompatActivity temp_context = mContext;
+ int mCounter = 0;
+ while (status.sTorBrowsing && (orbotLocalConstants.mSOCKSPort == -1 || !orbotLocalConstants.mIsTorInitialized || !orbotLocalConstants.mNetworkState)) {
+ try {
+ boolean mFastConnect = status.sSettingIsAppStarted || !status.sRestoreTabs && status.sAppInstalled && status.sSettingDefaultSearchEngine.equals(constants.CONST_BACKEND_GENESIS_URL) && !status.sBridgeStatus && status.sExternalWebsite.equals(strings.GENERIC_EMPTY_STR);
+ if (mFastConnect) {
+ sleep(1000);
+ if (orbotLocalConstants.mNetworkState) {
+ orbotLocalConstants.mTorLogsStatus = "Starting Orion | Please Wait ...";
+ mEvent.invokeObserver(Collections.singletonList(status.sSettingDefaultSearchEngine), enums.etype.recheck_orbot);
+ startPostTask(messages.MESSAGE_UPDATE_LOADING_TEXT);
+ if (orbotLocalConstants.mSOCKSPort != -1) {
+ //break;
+ }
+ } else {
+ orbotLocalConstants.mTorLogsStatus = "No internet connection";
+ startPostTask(messages.MESSAGE_UPDATE_LOADING_TEXT);
}
- } else {
- orbotLocalConstants.mTorLogsStatus = "No internet connection";
- startPostTask(messages.MESSAGE_UPDATE_LOADING_TEXT);
}
- }
- sleep(500);
- if (mCounter > 20 && orbotLocalConstants.mSOCKSPort != -1) {
- break;
- } else if (orbotLocalConstants.mNetworkState && status.sBridgeStatus) {
- mCounter += 1;
- }
- if (mFastConnect) {
- continue;
- }
+ if (mCounter > 20 && orbotLocalConstants.mSOCKSPort != -1) {
+ break;
+ } else if (orbotLocalConstants.mNetworkState && status.sBridgeStatus) {
+ mCounter += 1;
+ }
+ if (mFastConnect) {
+ continue;
+ }
- mEvent.invokeObserver(Collections.singletonList(status.sSettingDefaultSearchEngine), enums.etype.recheck_orbot);
- if (temp_context.isDestroyed()) {
- return null;
+ mEvent.invokeObserver(Collections.singletonList(status.sSettingDefaultSearchEngine), enums.etype.recheck_orbot);
+ if (temp_context.isDestroyed()) {
+ return;
+ }
+ startPostTask(messages.MESSAGE_UPDATE_LOADING_TEXT);
+ } catch (Exception e) {
+ e.printStackTrace();
}
- startPostTask(messages.MESSAGE_UPDATE_LOADING_TEXT);
- } catch (Exception e) {
- e.printStackTrace();
+ }
+
+ if (!status.sSettingIsAppStarted) {
+ mContext.runOnUiThread(() -> {
+ onDisableSplashScreen();
+ mEvent.invokeObserver(null, enums.etype.M_INIT_RUNTIME_SETTINGS);
+ startPostTask(messages.MESSAGE_ON_URL_LOAD);
+ });
+ } else {
+ mContext.runOnUiThread(() -> {
+ mEvent.invokeObserver(null, enums.etype.M_INIT_RUNTIME_SETTINGS);
+ mEvent.invokeObserver(null, enums.etype.ON_LOAD_TAB_ON_RESUME);
+ });
}
}
- mContext.runOnUiThread(() -> {
- mEvent.invokeObserver(null, enums.etype.M_INIT_RUNTIME_SETTINGS);
- });
-
- if (!status.sSettingIsAppStarted) {
- mContext.runOnUiThread(() -> {
- onDisableSplashScreen();
- });
- startPostTask(messages.MESSAGE_ON_URL_LOAD);
- } else {
- mContext.runOnUiThread(() -> {
- mEvent.invokeObserver(null, enums.etype.ON_LOAD_TAB_ON_RESUME);
- });
- }
- return null;
- }
+ }.start();
}
-
boolean mLogServiceExecuted = false;
void initProxyLoading(Callable logs) {
@@ -703,9 +697,7 @@ class homeViewController {
if (mSplashScreen.getVisibility() == View.VISIBLE) {
if (!mLogServiceExecuted) {
mLogServiceExecuted = true;
- if (this.mLogHandler.getStatus() != AsyncTask.Status.RUNNING) {
- this.mLogHandler.execute();
- }
+ LogHandler();
}
}
}
@@ -1082,7 +1074,6 @@ class homeViewController {
url = CONST_GENESIS_DOMAIN_URL;
}
- Log.i("FUCK::5", url);
if (!mSearchbar.hasFocus() || pClearText || pBypassFocus) {
if (mSearchEngineBar.getVisibility() == View.GONE || pBypassFocus) {
int delay = 0;
diff --git a/app/src/main/java/com/hiddenservices/onionservices/helperManager/helperMethod.java b/app/src/main/java/com/hiddenservices/onionservices/helperManager/helperMethod.java
index 0354b14d..8ce91f35 100644
--- a/app/src/main/java/com/hiddenservices/onionservices/helperManager/helperMethod.java
+++ b/app/src/main/java/com/hiddenservices/onionservices/helperManager/helperMethod.java
@@ -29,6 +29,7 @@ import android.graphics.drawable.TransitionDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Handler;
+import android.os.StatFs;
import android.os.Vibrator;
import android.text.SpannableString;
import android.text.Spanned;
@@ -261,6 +262,7 @@ public class helperMethod {
writer.write(content);
writer.close();
} catch (Exception ex) {
+ Log.i("","");
}
}
@@ -308,6 +310,11 @@ public class helperMethod {
return false;
}
+ public static int getFreeSpace(String pPath, Context pContext) {
+ StatFs stat = new StatFs(pPath);
+ return (int) stat.getAvailableBlocksLong();
+ }
+
public static String completeURL(String pURL) {
if (pURL.equals("about:blank") || pURL.equals("about:config") || pURL.startsWith("resource://")) {
return pURL;
diff --git a/app/src/main/java/com/hiddenservices/onionservices/pluginManager/adPluginManager/appLovinManager.java b/app/src/main/java/com/hiddenservices/onionservices/pluginManager/adPluginManager/appLovinManager.java
index 48f741ab..71363d09 100644
--- a/app/src/main/java/com/hiddenservices/onionservices/pluginManager/adPluginManager/appLovinManager.java
+++ b/app/src/main/java/com/hiddenservices/onionservices/pluginManager/adPluginManager/appLovinManager.java
@@ -1,9 +1,6 @@
package com.hiddenservices.onionservices.pluginManager.adPluginManager;
-import static android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION;
-
import android.content.Context;
-import android.content.Intent;
import android.os.Handler;
import android.util.Log;
import com.applovin.mediation.MaxAd;
@@ -11,20 +8,12 @@ import com.applovin.mediation.MaxAdViewAdListener;
import com.applovin.mediation.MaxError;
import com.applovin.mediation.ads.MaxAdView;
import com.applovin.sdk.AppLovinSdk;
-import com.applovin.sdk.AppLovinSdkConfiguration;
-import com.example.myapplication.R;
-import com.facebook.ads.AdSettings;
-import com.hiddenservices.onionservices.appManager.activityContextManager;
-import com.hiddenservices.onionservices.appManager.advertManager.advertController;
-import com.hiddenservices.onionservices.constants.keys;
import com.hiddenservices.onionservices.constants.status;
import com.hiddenservices.onionservices.eventObserver;
import com.hiddenservices.onionservices.pluginManager.pluginEnums;
import java.lang.ref.WeakReference;
import static com.hiddenservices.onionservices.pluginManager.pluginEnums.eAdManagerCallbacks.M_ON_AD_LOAD;
-import androidx.appcompat.app.AppCompatActivity;
-
public class appLovinManager implements MaxAdViewAdListener {
/*Private Variables */
@@ -47,7 +36,7 @@ public class appLovinManager implements MaxAdViewAdListener {
private void initializeBannerAds(Context pContext) {
AppLovinSdk.getInstance(pContext).setMediationProvider("max");
- AppLovinSdk.initializeSdk(pContext,(AppLovinSdk.SdkInitializationListener) configuration -> {
+ AppLovinSdk.initializeSdk(pContext, configuration -> {
mBannerAds.get().loadAd();
});
}
diff --git a/app/src/main/java/com/hiddenservices/onionservices/pluginManager/messagePluginManager/messageManager.java b/app/src/main/java/com/hiddenservices/onionservices/pluginManager/messagePluginManager/messageManager.java
index 50654c44..63332a3e 100644
--- a/app/src/main/java/com/hiddenservices/onionservices/pluginManager/messagePluginManager/messageManager.java
+++ b/app/src/main/java/com/hiddenservices/onionservices/pluginManager/messagePluginManager/messageManager.java
@@ -822,6 +822,11 @@ public class messageManager implements View.OnClickListener, DialogInterface.OnD
onUpdateBridges();
break;
+ case M_LOW_MEMORY:
+ /*VERIFIED*/
+ onShowToast(R.layout.popup_toast_generic, R.xml.ax_background_important, 5000, "Low memory, some settings might not work", mContext.getString(R.string.ALERT_DISMISS), null);
+ break;
+
case M_NEW_IDENTITY:
/*VERIFIED*/
onShowToast(R.layout.popup_toast_generic, R.xml.ax_background_important, 2000, mContext.getString(R.string.TOAST_ALERT_NEW_CIRCUIT_CREATED), mContext.getString(R.string.ALERT_DISMISS), null);
diff --git a/app/src/main/java/com/hiddenservices/onionservices/pluginManager/orbotPluginManager/orbotManager.java b/app/src/main/java/com/hiddenservices/onionservices/pluginManager/orbotPluginManager/orbotManager.java
index c0971db6..2c3a8e0b 100644
--- a/app/src/main/java/com/hiddenservices/onionservices/pluginManager/orbotPluginManager/orbotManager.java
+++ b/app/src/main/java/com/hiddenservices/onionservices/pluginManager/orbotPluginManager/orbotManager.java
@@ -1,5 +1,6 @@
package com.hiddenservices.onionservices.pluginManager.orbotPluginManager;
+import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -7,6 +8,7 @@ import androidx.appcompat.app.AppCompatActivity;
import org.torproject.android.service.OrbotService;
import org.torproject.android.service.util.Prefs;
+import org.torproject.android.service.util.Utils;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import java.lang.ref.WeakReference;
@@ -14,6 +16,7 @@ import java.util.Collections;
import java.util.List;
import com.hiddenservices.onionservices.constants.constants;
+import com.hiddenservices.onionservices.constants.enums;
import com.hiddenservices.onionservices.constants.keys;
import com.hiddenservices.onionservices.constants.status;
import com.hiddenservices.onionservices.eventObserver;
@@ -47,14 +50,11 @@ public class orbotManager {
this.mLogManger = new orbotLogManager();
orbotLocalConstants.mNotificationStatus = pNotificationStatus;
+ orbotLocalConstants.mSOCKSPort = checkPortOrAutoManual(mAppContext.get());
}
private void onInitlizeOrbot(String pBridgeCustomBridge, boolean pBridgeGatewayManual, String pBridgeCustomType, boolean pBridgeStatus, String pBridgesDefault) {
- if (helperMethod.availablePort(9050)) {
- orbotLocalConstants.mSOCKSPort = 9050;
- }
-
orbotLocalConstants.mBridges = pBridgeCustomBridge;
orbotLocalConstants.mIsManualBridge = pBridgeGatewayManual;
orbotLocalConstants.mManualBridgeType = pBridgeCustomType;
@@ -64,14 +64,42 @@ public class orbotManager {
onInitailizeService();
}
+ public int checkPortOrAutoManual(Context context) {
+ SharedPreferences prefs = Prefs.getSharedPrefs(context.getApplicationContext());
+ String portString = prefs.getString("pref_transport", 9050 + "");
+
+ if (!portString.equalsIgnoreCase("auto")) {
+ boolean isPortUsed = true;
+ int port = Integer.parseInt(portString);
+
+ while (isPortUsed) {
+ isPortUsed = Utils.isPortOpen("127.0.0.1", port, 500);
+
+ if (isPortUsed) //the specified port is not available, so let Tor find one instead
+ port++;
+ }
+ return port;
+ }
+
+ return 9050;
+ }
+
private void onInitailizeService() {
if (status.sTorBrowsing) {
- Intent startTorIntent = new Intent(mAppContext.get(), OrbotService.class);
- startTorIntent.setAction(ACTION_START);
- if (mAppContext.get().getPackageName() != null) {
- startTorIntent.putExtra(OrbotService.EXTRA_PACKAGE_NAME, mAppContext.get().getPackageName());
- }
- mAppContext.get().startService(startTorIntent);
+ orbotLocalConstants.mIsTorInitialized = true;
+
+ new Thread(){
+ public void run(){
+ mAppContext.get().runOnUiThread(() -> {
+ Intent startTorIntent = new Intent(mAppContext.get(), OrbotService.class);
+ startTorIntent.setAction(ACTION_START);
+ if (mAppContext.get().getPackageName() != null) {
+ startTorIntent.putExtra(OrbotService.EXTRA_PACKAGE_NAME, mAppContext.get().getPackageName());
+ }
+ mAppContext.get().startService(startTorIntent);
+ });
+ }
+ }.start();
SharedPreferences settings = mAppContext.get().getSharedPreferences("se", MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
@@ -82,7 +110,7 @@ public class orbotManager {
editor.putBoolean(keys.PROXY_SOCKS_REMOTE_DNS, constants.CONST_PROXY_SOCKS_REMOTE_DNS);
editor.apply();
} else {
- orbotLocalConstants.mIsTorInitialized = true;
+ //orbotLocalConstants.mIsTorInitialized = true;
}
}
diff --git a/app/src/main/java/com/hiddenservices/onionservices/pluginManager/pluginEnums.java b/app/src/main/java/com/hiddenservices/onionservices/pluginManager/pluginEnums.java
index 24c66f4a..813de6dc 100644
--- a/app/src/main/java/com/hiddenservices/onionservices/pluginManager/pluginEnums.java
+++ b/app/src/main/java/com/hiddenservices/onionservices/pluginManager/pluginEnums.java
@@ -26,7 +26,7 @@ public class pluginEnums {
/*Message Manager*/
public enum eMessageManager {
- M_RESET, M_DATA_CLEARED, M_COPY, M_APPLICATION_CRASH, M_DELETE_BOOKMARK, M_UPDATE_BOOKMARK, M_IMAGE_UPDATE, M_OPEN_ACTIVITY_FAILED, M_OPEN_CICADA, M_TOR_SWITCH, M_SECURE_CONNECTION, M_SECURITY_INFO, M_POPUP_BLOCKED, M_PANIC, M_MAX_TAB_REACHED, M_ORBOT_LOADING, M_GENESIS_SEARCH_DISABLED, M_LOAD_NEW_TAB, M_UNDO, M_DOWNLOAD_SINGLE, M_UPDATE_BRIDGES, M_NEW_IDENTITY, M_NOT_SUPPORTED, M_BRIDGE_MAIL, M_LONG_PRESS_WITH_LINK, M_LONG_PRESS_URL, M_LONG_PRESS_DOWNLOAD, M_START_ORBOT, M_DOWNLOAD_FAILURE, M_DOWNLOAD_FILE, M_RATE_APP, M_REPORT_URL, M_CLEAR_BOOKMARK, M_CLEAR_HISTORY, M_BOOKMARK, M_PANIC_RESET, M_DEFAULT_BROWSER, M_TOR_SWITCH_RESTART, M_RATE_SUCCESS, M_RATE_FAILURE, M_CLOSE, M_LANGUAGE_SUPPORT_FAILURE, M_WELCOME
+ M_RESET, M_DATA_CLEARED, M_COPY, M_APPLICATION_CRASH, M_DELETE_BOOKMARK, M_UPDATE_BOOKMARK, M_IMAGE_UPDATE, M_OPEN_ACTIVITY_FAILED, M_OPEN_CICADA, M_TOR_SWITCH, M_SECURE_CONNECTION, M_SECURITY_INFO, M_POPUP_BLOCKED, M_PANIC, M_MAX_TAB_REACHED, M_ORBOT_LOADING, M_GENESIS_SEARCH_DISABLED, M_LOAD_NEW_TAB, M_UNDO, M_DOWNLOAD_SINGLE, M_UPDATE_BRIDGES, M_LOW_MEMORY, M_NEW_IDENTITY, M_NOT_SUPPORTED, M_BRIDGE_MAIL, M_LONG_PRESS_WITH_LINK, M_LONG_PRESS_URL, M_LONG_PRESS_DOWNLOAD, M_START_ORBOT, M_DOWNLOAD_FAILURE, M_DOWNLOAD_FILE, M_RATE_APP, M_REPORT_URL, M_CLEAR_BOOKMARK, M_CLEAR_HISTORY, M_BOOKMARK, M_PANIC_RESET, M_DEFAULT_BROWSER, M_TOR_SWITCH_RESTART, M_RATE_SUCCESS, M_RATE_FAILURE, M_CLOSE, M_LANGUAGE_SUPPORT_FAILURE, M_WELCOME
}
public enum eMessageManagerCallbacks {
diff --git a/app/variables.gradle b/app/variables.gradle
index d33ddd2d..f60c46e8 100755
--- a/app/variables.gradle
+++ b/app/variables.gradle
@@ -30,9 +30,9 @@ project.ext.splitEnabled = true
/* Application Preferences */
project.ext.compile_sdk_version = 33
project.ext.min_sdk_version = 21
-project.ext.target_sdk_version = 31
+project.ext.target_sdk_version = 33
project.ext.build_tool_version = '33'
-project.ext.ndk_version = '21.4.7075529'
+project.ext.ndk_version = '25.1.8937393'
project.ext.application_id = "com.hiddenservices.onionservices"
project.ext.debugSymbolLevel = 'FULL'
diff --git a/libs/build-geoip-jar.sh b/libs/build-geoip-jar.sh
new file mode 100644
index 00000000..58ab031f
--- /dev/null
+++ b/libs/build-geoip-jar.sh
@@ -0,0 +1,6 @@
+# assumes tor-android is in a directory next to orbot
+mkdir assets
+cp -a ../../tor-android/external/tor/src/config/geoip assets/
+cp -a ../../tor-android/external/tor/src/config/geoip6 assets/
+zip -o geoip.jar assets/geoip assets/geoip6
+rm -rf assets
diff --git a/libs/geoip.jar b/libs/geoip.jar
new file mode 100644
index 00000000..419104cb
Binary files /dev/null and b/libs/geoip.jar differ
diff --git a/orbotmanager/build.gradle b/orbotmanager/build.gradle
index 2decb9af..81bd404d 100644
--- a/orbotmanager/build.gradle
+++ b/orbotmanager/build.gradle
@@ -3,17 +3,17 @@ apply from: "../commons.gradle"
apply from : '../dependencies.gradle'
android {
- ndkVersion '21.3.6528147'
+ ndkVersion '25.1.8937393'
sourceSets {
- main {
- jniLibs.srcDirs = ['./src/main/libs']
- }
+ main {
+ jniLibs.srcDirs = ['./src/main/libs']
+ }
}
defaultConfig {
- minSdkVersion 21
- targetSdkVersion 32
+ minSdkVersion 16
+ targetSdkVersion 33
}
buildTypes {
@@ -24,7 +24,7 @@ android {
}
packagingOptions {
resources {
- excludes += ['META-INF/AL2.0']
+ excludes += ['META-INF/androidx.localbroadcastmanager_localbroadcastmanager.version']
}
}
@@ -42,25 +42,19 @@ android {
}
dependencies {
- implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
- implementation 'com.gitlab.guardianproject:jsocksandroid:1.0.4'
- implementation 'com.jaredrummler:android-shell:1.0.0'
-
- implementation 'androidx.core:core:1.9.0'
- implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'com.offbynull.portmapper:portmapper:2.0.5'
-
- implementation 'info.guardianproject:geoip:20191217'
-
- api 'info.guardianproject:jtorctl:0.4.5.7'
- implementation 'info.guardianproject:tor-android:0.4.6.10'
-
- implementation 'androidx.work:work-runtime-ktx:2.8.0-rc01'
api libs.guardian_jtorctl
- implementation(
- libs.ipt_proxy,
- )
-}
+ api project(':OrbotLib')
+ api project(':tor-android')
+
+ // api libs.tor_android
+ implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
+ implementation 'androidx.core:core:1.9.0'
+ implementation 'com.gitlab.guardianproject:jsocksandroid:1.0.4'
+ implementation 'com.offbynull.portmapper:portmapper:2.0.5'
+ implementation 'androidx.work:work-runtime-ktx:2.8.0-rc01'
+
+ implementation files('../libs/geoip.jar')
+
+
+}
\ No newline at end of file
diff --git a/orbotmanager/src/main/java/org/torproject/android/service/OrbotService.java b/orbotmanager/src/main/java/org/torproject/android/service/OrbotService.java
index 41fac2ee..bc562964 100644
--- a/orbotmanager/src/main/java/org/torproject/android/service/OrbotService.java
+++ b/orbotmanager/src/main/java/org/torproject/android/service/OrbotService.java
@@ -760,7 +760,7 @@ public class OrbotService extends VpnService implements OrbotConstants {
return null;
}
- private String checkPortOrAuto(String portString) {
+ public String checkPortOrAuto(String portString) {
if (!portString.equalsIgnoreCase("auto")) {
var isPortUsed = true;
var port = Integer.parseInt(portString);
@@ -949,6 +949,7 @@ public class OrbotService extends VpnService implements OrbotConstants {
initControlConnection();
+ orbotLocalConstants.mIsTorInitialized = true;
}
}catch (Exception ex){}
}
@@ -1029,7 +1030,6 @@ public class OrbotService extends VpnService implements OrbotConstants {
}
sendCallbackPorts(mPortSOCKS, mPortHTTP, mPortDns, mPortTrans);
- orbotLocalConstants.mIsTorInitialized = true;
} catch (IOException e) {
Log.i("sad","asd");
@@ -1091,7 +1091,6 @@ public class OrbotService extends VpnService implements OrbotConstants {
mPrevLogs = logMessage;
}
if(logMessage.contains("Bootstrapped 100%")){
- orbotLocalConstants.mIsTorInitialized = true;
}
mHandler.post(() -> {
Intent intent = new Intent(LOCAL_ACTION_LOG);
diff --git a/settings.gradle b/settings.gradle
index 70a5fe14..fd66bc5a 100755
--- a/settings.gradle
+++ b/settings.gradle
@@ -14,3 +14,5 @@ include ':shutterbug'
include ':orbotmanager'
include ':android-database-sqlcipher'
include ':service-telemetry'
+include ':OrbotLib'
+include ':tor-android'
diff --git a/tor-android/build.gradle b/tor-android/build.gradle
new file mode 100644
index 00000000..f7ba5058
--- /dev/null
+++ b/tor-android/build.gradle
@@ -0,0 +1,2 @@
+configurations.maybeCreate("default")
+artifacts.add("default",file('tor-android.aar'))
diff --git a/tor-android/build/.transforms/076b656099a66773510671a3aeeced7b/results.bin b/tor-android/build/.transforms/076b656099a66773510671a3aeeced7b/results.bin
new file mode 100644
index 00000000..4f158e23
--- /dev/null
+++ b/tor-android/build/.transforms/076b656099a66773510671a3aeeced7b/results.bin
@@ -0,0 +1 @@
+o/jetified-tor-android-runtime
diff --git a/tor-android/build/.transforms/076b656099a66773510671a3aeeced7b/transformed/jetified-tor-android-runtime/classes.dex b/tor-android/build/.transforms/076b656099a66773510671a3aeeced7b/transformed/jetified-tor-android-runtime/classes.dex
new file mode 100644
index 00000000..2d685583
Binary files /dev/null and b/tor-android/build/.transforms/076b656099a66773510671a3aeeced7b/transformed/jetified-tor-android-runtime/classes.dex differ
diff --git a/tor-android/build/.transforms/0d48719ec5ac692e2612f83673e1d22b/results.bin b/tor-android/build/.transforms/0d48719ec5ac692e2612f83673e1d22b/results.bin
new file mode 100644
index 00000000..1a9664ec
--- /dev/null
+++ b/tor-android/build/.transforms/0d48719ec5ac692e2612f83673e1d22b/results.bin
@@ -0,0 +1 @@
+o/jetified-tor-android-runtime.jar
diff --git a/tor-android/build/.transforms/0d48719ec5ac692e2612f83673e1d22b/transformed/jetified-tor-android-runtime.jar b/tor-android/build/.transforms/0d48719ec5ac692e2612f83673e1d22b/transformed/jetified-tor-android-runtime.jar
new file mode 100644
index 00000000..7bb7d7a6
Binary files /dev/null and b/tor-android/build/.transforms/0d48719ec5ac692e2612f83673e1d22b/transformed/jetified-tor-android-runtime.jar differ
diff --git a/tor-android/build/.transforms/1de1cc6110ae53f64088497d6c481e04/results.bin b/tor-android/build/.transforms/1de1cc6110ae53f64088497d6c481e04/results.bin
new file mode 100644
index 00000000..390ed693
--- /dev/null
+++ b/tor-android/build/.transforms/1de1cc6110ae53f64088497d6c481e04/results.bin
@@ -0,0 +1 @@
+o/jetified-tor-android-api.jar
diff --git a/tor-android/build/.transforms/1de1cc6110ae53f64088497d6c481e04/transformed/jetified-tor-android-api.jar b/tor-android/build/.transforms/1de1cc6110ae53f64088497d6c481e04/transformed/jetified-tor-android-api.jar
new file mode 100644
index 00000000..d56b0e6b
Binary files /dev/null and b/tor-android/build/.transforms/1de1cc6110ae53f64088497d6c481e04/transformed/jetified-tor-android-api.jar differ
diff --git a/tor-android/build/.transforms/342e54ea655e75ccc188964239e8d845/results.bin b/tor-android/build/.transforms/342e54ea655e75ccc188964239e8d845/results.bin
new file mode 100644
index 00000000..941f8ee3
--- /dev/null
+++ b/tor-android/build/.transforms/342e54ea655e75ccc188964239e8d845/results.bin
@@ -0,0 +1 @@
+o/org.torproject.jni
diff --git a/tor-android/build/.transforms/3c978a5d2e9b7b62ff71209b578f1058/results.bin b/tor-android/build/.transforms/3c978a5d2e9b7b62ff71209b578f1058/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/tor-android/build/.transforms/40d6ddcaec017354b2919ecc1d2d59f4/results.bin b/tor-android/build/.transforms/40d6ddcaec017354b2919ecc1d2d59f4/results.bin
new file mode 100644
index 00000000..3c8a12d9
--- /dev/null
+++ b/tor-android/build/.transforms/40d6ddcaec017354b2919ecc1d2d59f4/results.bin
@@ -0,0 +1 @@
+o/org.torproject.jni-r.txt
diff --git a/tor-android/build/.transforms/40d6ddcaec017354b2919ecc1d2d59f4/transformed/org.torproject.jni-r.txt b/tor-android/build/.transforms/40d6ddcaec017354b2919ecc1d2d59f4/transformed/org.torproject.jni-r.txt
new file mode 100644
index 00000000..d031c2fa
--- /dev/null
+++ b/tor-android/build/.transforms/40d6ddcaec017354b2919ecc1d2d59f4/transformed/org.torproject.jni-r.txt
@@ -0,0 +1 @@
+org.torproject.jni
diff --git a/tor-android/build/.transforms/4a94ccad4c5ab1fa80407bd85ffe4fbb/results.bin b/tor-android/build/.transforms/4a94ccad4c5ab1fa80407bd85ffe4fbb/results.bin
new file mode 100644
index 00000000..4f158e23
--- /dev/null
+++ b/tor-android/build/.transforms/4a94ccad4c5ab1fa80407bd85ffe4fbb/results.bin
@@ -0,0 +1 @@
+o/jetified-tor-android-runtime
diff --git a/tor-android/build/.transforms/4a94ccad4c5ab1fa80407bd85ffe4fbb/transformed/jetified-tor-android-runtime/classes.dex b/tor-android/build/.transforms/4a94ccad4c5ab1fa80407bd85ffe4fbb/transformed/jetified-tor-android-runtime/classes.dex
new file mode 100644
index 00000000..05710be1
Binary files /dev/null and b/tor-android/build/.transforms/4a94ccad4c5ab1fa80407bd85ffe4fbb/transformed/jetified-tor-android-runtime/classes.dex differ
diff --git a/tor-android/build/.transforms/5ba87347356b9c450b256db7c03e9ae1/results.bin b/tor-android/build/.transforms/5ba87347356b9c450b256db7c03e9ae1/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/results.bin b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/results.bin
new file mode 100644
index 00000000..40582149
--- /dev/null
+++ b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/results.bin
@@ -0,0 +1 @@
+o/jetified-tor-android
diff --git a/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/AndroidManifest.xml b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/AndroidManifest.xml
new file mode 100644
index 00000000..93c02276
--- /dev/null
+++ b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/AndroidManifest.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/META-INF/com/android/build/gradle/aar-metadata.properties b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/META-INF/com/android/build/gradle/aar-metadata.properties
new file mode 100644
index 00000000..8c9c6997
--- /dev/null
+++ b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/META-INF/com/android/build/gradle/aar-metadata.properties
@@ -0,0 +1,4 @@
+aarFormatVersion=1.0
+aarMetadataVersion=1.0
+minCompileSdk=1
+minAndroidGradlePluginVersion=1.0.0
diff --git a/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/R.txt b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/R.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jars/classes.jar b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jars/classes.jar
new file mode 100644
index 00000000..4d6b7760
Binary files /dev/null and b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jars/classes.jar differ
diff --git a/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jni/arm64-v8a/libtor.so b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jni/arm64-v8a/libtor.so
new file mode 100644
index 00000000..82f52b44
Binary files /dev/null and b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jni/arm64-v8a/libtor.so differ
diff --git a/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jni/armeabi-v7a/libtor.so b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jni/armeabi-v7a/libtor.so
new file mode 100644
index 00000000..72d97847
Binary files /dev/null and b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jni/armeabi-v7a/libtor.so differ
diff --git a/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jni/x86/libtor.so b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jni/x86/libtor.so
new file mode 100644
index 00000000..53b352d5
Binary files /dev/null and b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jni/x86/libtor.so differ
diff --git a/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jni/x86_64/libtor.so b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jni/x86_64/libtor.so
new file mode 100644
index 00000000..656a09ce
Binary files /dev/null and b/tor-android/build/.transforms/6884dbaaf30c81593c7f46c391544ea1/transformed/jetified-tor-android/jni/x86_64/libtor.so differ
diff --git a/tor-android/build/.transforms/731bc05c6f0c1babbc1ee1f1743a054e/results.bin b/tor-android/build/.transforms/731bc05c6f0c1babbc1ee1f1743a054e/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/tor-android/build/.transforms/75c7b4c1dccf8767aa665bbee9e13ee4/results.bin b/tor-android/build/.transforms/75c7b4c1dccf8767aa665bbee9e13ee4/results.bin
new file mode 100644
index 00000000..4cb57b82
--- /dev/null
+++ b/tor-android/build/.transforms/75c7b4c1dccf8767aa665bbee9e13ee4/results.bin
@@ -0,0 +1 @@
+o/jetified-tor-android.aar
diff --git a/tor-android/build/.transforms/75c7b4c1dccf8767aa665bbee9e13ee4/transformed/jetified-tor-android.aar b/tor-android/build/.transforms/75c7b4c1dccf8767aa665bbee9e13ee4/transformed/jetified-tor-android.aar
new file mode 100644
index 00000000..fc794bbf
Binary files /dev/null and b/tor-android/build/.transforms/75c7b4c1dccf8767aa665bbee9e13ee4/transformed/jetified-tor-android.aar differ
diff --git a/tor-android/build/.transforms/828c0d30a2dda8d549453cf85a99f0cd/results.bin b/tor-android/build/.transforms/828c0d30a2dda8d549453cf85a99f0cd/results.bin
new file mode 100644
index 00000000..1ed65e03
--- /dev/null
+++ b/tor-android/build/.transforms/828c0d30a2dda8d549453cf85a99f0cd/results.bin
@@ -0,0 +1 @@
+i/
diff --git a/tor-android/build/.transforms/82a195d417e3c0b4e62ad9c0666a3f89/results.bin b/tor-android/build/.transforms/82a195d417e3c0b4e62ad9c0666a3f89/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/tor-android/build/.transforms/87930ee2bbe238daf337f6ad24c17d6f/results.bin b/tor-android/build/.transforms/87930ee2bbe238daf337f6ad24c17d6f/results.bin
new file mode 100644
index 00000000..fcbf8d4b
--- /dev/null
+++ b/tor-android/build/.transforms/87930ee2bbe238daf337f6ad24c17d6f/results.bin
@@ -0,0 +1 @@
+i/AndroidManifest.xml
diff --git a/tor-android/build/.transforms/a859eb3e1089186945af09b3cf247faf/results.bin b/tor-android/build/.transforms/a859eb3e1089186945af09b3cf247faf/results.bin
new file mode 100644
index 00000000..c626d1be
--- /dev/null
+++ b/tor-android/build/.transforms/a859eb3e1089186945af09b3cf247faf/results.bin
@@ -0,0 +1 @@
+i/jars/classes.jar
diff --git a/tor-android/build/.transforms/b080e8a989741951e2c8a71566c5ea41/results.bin b/tor-android/build/.transforms/b080e8a989741951e2c8a71566c5ea41/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/tor-android/build/.transforms/c91614606774a714afcd335e62140420/results.bin b/tor-android/build/.transforms/c91614606774a714afcd335e62140420/results.bin
new file mode 100644
index 00000000..e69de29b
diff --git a/tor-android/build/.transforms/ed9b4a03ac8f6d7ed07bf433c0a16a32/results.bin b/tor-android/build/.transforms/ed9b4a03ac8f6d7ed07bf433c0a16a32/results.bin
new file mode 100644
index 00000000..199366a7
--- /dev/null
+++ b/tor-android/build/.transforms/ed9b4a03ac8f6d7ed07bf433c0a16a32/results.bin
@@ -0,0 +1 @@
+i/jni
diff --git a/tor-android/build/.transforms/f05be4d297b563d449f6615e6c5c01d3/results.bin b/tor-android/build/.transforms/f05be4d297b563d449f6615e6c5c01d3/results.bin
new file mode 100644
index 00000000..63dace7e
--- /dev/null
+++ b/tor-android/build/.transforms/f05be4d297b563d449f6615e6c5c01d3/results.bin
@@ -0,0 +1 @@
+i/META-INF/com/android/build/gradle/aar-metadata.properties
diff --git a/tor-android/tor-android.aar b/tor-android/tor-android.aar
new file mode 100644
index 00000000..fc794bbf
Binary files /dev/null and b/tor-android/tor-android.aar differ