log for com.github.shadowsocks.tv:5030050

== Installed Android Tools ==

2022-06-24 23:34:25,673 DEBUG: Reading 'config.yml'
2022-06-24 23:34:25,683 INFO: Using /opt/android-sdk/build-tools/29.0.3/apksigner 
2022-06-24 23:34:25,685 INFO: Creating log directory
2022-06-24 23:34:25,685 INFO: Creating temporary directory
2022-06-24 23:34:25,685 INFO: Creating output directory
2022-06-24 23:34:25,688 DEBUG: Getting git vcs interface for https://github.com/shadowsocks/shadowsocks-android.git
2022-06-24 23:34:25,689 DEBUG: > git --version
git version 2.11.0
2022-06-24 23:34:25,922 INFO: Using git version 2.11.0
2022-06-24 23:34:25,922 DEBUG: Checking 5.3.0-nightly
2022-06-24 23:34:25,923 INFO: Building version 5.3.0-nightly (5030050) of com.github.shadowsocks.tv
2022-06-24 23:34:25,923 WARNING: Android NDK version 'r21e' could not be found!
2022-06-24 23:34:25,923 WARNING: Configured versions:
2022-06-24 23:34:25,923 WARNING:   r23b: /opt/android-sdk/ndk/23.1.7779620
2022-06-24 23:34:25,924 INFO: Downloading https://dl.google.com/android/repository/android-ndk-r21e-linux-x86_64.zip
2022-06-24 23:34:25,937 DEBUG: Starting new HTTPS connection (1): dl.google.com
2022-06-24 23:34:25,997 DEBUG: https://dl.google.com:443 "GET /android/repository/android-ndk-r21e-linux-x86_64.zip HTTP/1.1" 200 1190670072
2022-06-24 23:35:01,408 INFO: Unzipping to /opt/android-sdk/ndk
2022-06-24 23:35:28,451 INFO: Set NDK r21e (21.4.7075529) up
2022-06-24 23:35:28,456 INFO: Running 'sudo' commands in /home/vagrant
2022-06-24 23:35:28,456 DEBUG: > sudo DEBIAN_FRONTEND=noninteractive bash -x -c apt-get update || apt-get update && apt-get install openjdk-11-jdk-headless && update-alternatives --auto java
+ apt-get update
Hit:1 http://security.debian.org/debian-security stretch/updates InRelease
Ign:2 http://deb.debian.org/debian stretch InRelease
Hit:3 http://deb.debian.org/debian stretch-updates InRelease
Get:4 http://deb.debian.org/debian stretch-backports-sloppy InRelease [46.7 kB]
Get:5 http://deb.debian.org/debian stretch-backports InRelease [91.8 kB]
Get:6 http://deb.debian.org/debian testing InRelease [130 kB]
Hit:7 http://deb.debian.org/debian stretch Release
Get:8 http://deb.debian.org/debian testing/main i386 Packages.diff/Index [63.6 kB]
Get:10 http://deb.debian.org/debian testing/main amd64 Packages.diff/Index [63.6 kB]
Get:11 http://deb.debian.org/debian testing/main Translation-en.diff/Index [63.6 kB]
Get:12 http://deb.debian.org/debian testing/main i386 Packages T-2022-06-24-2010.09-F-2022-06-24-1413.16.pdiff [1,431 B]
Get:12 http://deb.debian.org/debian testing/main i386 Packages T-2022-06-24-2010.09-F-2022-06-24-1413.16.pdiff [1,431 B]
Get:13 http://deb.debian.org/debian testing/main amd64 Packages T-2022-06-24-2010.09-F-2022-06-24-1413.16.pdiff [1,438 B]
Get:13 http://deb.debian.org/debian testing/main amd64 Packages T-2022-06-24-2010.09-F-2022-06-24-1413.16.pdiff [1,438 B]
Get:14 http://deb.debian.org/debian testing/main Translation-en T-2022-06-24-1413.16-F-2022-06-24-1413.16.pdiff [85 B]
Get:14 http://deb.debian.org/debian testing/main Translation-en T-2022-06-24-1413.16-F-2022-06-24-1413.16.pdiff [85 B]
Fetched 462 kB in 10s (43.9 kB/s)
Reading package lists...
+ apt-get install openjdk-11-jdk-headless
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  libasound2 libasound2-data openjdk-11-jre-headless
Suggested packages:
  libasound2-plugins alsa-utils openjdk-11-demo openjdk-11-source libnss-mdns
  fonts-dejavu-extra fonts-ipafont-gothic fonts-ipafont-mincho
  fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic
The following NEW packages will be installed:
  libasound2 libasound2-data openjdk-11-jdk-headless openjdk-11-jre-headless
0 upgraded, 4 newly installed, 0 to remove and 2 not upgraded.
Need to get 230 MB of archives.
After this operation, 374 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian stretch/main amd64 libasound2-data all 1.1.3-5 [173 kB]
Get:2 http://deb.debian.org/debian stretch/main amd64 libasound2 amd64 1.1.3-5 [497 kB]
Get:3 http://deb.debian.org/debian stretch-backports/main amd64 openjdk-11-jre-headless amd64 11.0.6+10-1~bpo9+1 [37.4 MB]
Get:4 http://deb.debian.org/debian stretch-backports/main amd64 openjdk-11-jdk-headless amd64 11.0.6+10-1~bpo9+1 [192 MB]
Fetched 230 MB in 2s (106 MB/s)
Selecting previously unselected package libasound2-data.
(Reading database ... 65038 files and directories currently installed.)
Preparing to unpack .../libasound2-data_1.1.3-5_all.deb ...
Unpacking libasound2-data (1.1.3-5) ...
Selecting previously unselected package libasound2:amd64.
Preparing to unpack .../libasound2_1.1.3-5_amd64.deb ...
Unpacking libasound2:amd64 (1.1.3-5) ...
Selecting previously unselected package openjdk-11-jre-headless:amd64.
Preparing to unpack .../openjdk-11-jre-headless_11.0.6+10-1~bpo9+1_amd64.deb ...
Unpacking openjdk-11-jre-headless:amd64 (11.0.6+10-1~bpo9+1) ...
Selecting previously unselected package openjdk-11-jdk-headless:amd64.
Preparing to unpack .../openjdk-11-jdk-headless_11.0.6+10-1~bpo9+1_amd64.deb ...
Unpacking openjdk-11-jdk-headless:amd64 (11.0.6+10-1~bpo9+1) ...
Setting up libasound2-data (1.1.3-5) ...
Setting up libasound2:amd64 (1.1.3-5) ...
Processing triggers for libc-bin (2.24-11+deb9u4) ...
Setting up openjdk-11-jre-headless:amd64 (11.0.6+10-1~bpo9+1) ...
Setting up openjdk-11-jdk-headless:amd64 (11.0.6+10-1~bpo9+1) ...
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jdeprscan to provide /usr/bin/jdeprscan (jdeprscan) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jimage to provide /usr/bin/jimage (jimage) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jlink to provide /usr/bin/jlink (jlink) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jmod to provide /usr/bin/jmod (jmod) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jshell to provide /usr/bin/jshell (jshell) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jaotc to provide /usr/bin/jaotc (jaotc) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb) in auto mode
+ update-alternatives --auto java
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/java to provide /usr/bin/java (java) in auto mode
2022-06-24 23:36:38,066 DEBUG: > sudo passwd --lock root
passwd: password expiry information changed.
2022-06-24 23:36:38,275 DEBUG: > sudo SUDO_FORCE_REMOVE=yes dpkg --purge sudo
(Reading database ... 65695 files and directories currently installed.)
Removing sudo (1.8.19p1-2.1+deb9u3) ...
Purging configuration files for sudo (1.8.19p1-2.1+deb9u3) ...
Processing triggers for systemd (232-25+deb9u13) ...
2022-06-24 23:36:44,348 INFO: Getting source for revision 09c2290c1ba07336b11a6b7576886d202e14ac71
2022-06-24 23:36:44,349 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:44,349 DEBUG: > git rev-parse --show-toplevel
2022-06-24 23:36:44,556 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:44,556 DEBUG: > git submodule foreach --recursive git reset --hard
2022-06-24 23:36:45,076 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:45,076 DEBUG: > git reset --hard
2022-06-24 23:36:45,284 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:45,285 DEBUG: > git submodule foreach --recursive git clean -dffx
2022-06-24 23:36:45,592 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:45,593 DEBUG: > git clean -dffx
2022-06-24 23:36:45,699 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:45,700 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com fetch origin
2022-06-24 23:36:46,323 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:46,323 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com remote prune origin
2022-06-24 23:36:46,633 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:46,633 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com fetch --prune --tags --force origin
2022-06-24 23:36:46,953 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:46,954 DEBUG: > git remote set-head origin --auto
2022-06-24 23:36:47,365 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:47,366 DEBUG: > git checkout -f 09c2290c1ba07336b11a6b7576886d202e14ac71
2022-06-24 23:36:47,578 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:47,579 DEBUG: > git clean -dffx
2022-06-24 23:36:47,694 INFO: Initialising submodules
2022-06-24 23:36:47,695 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:47,696 DEBUG: > git rev-parse --show-toplevel
2022-06-24 23:36:47,947 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:47,947 DEBUG: > git submodule sync
2022-06-24 23:36:48,350 DEBUG: Directory: build/com.github.shadowsocks.tv
2022-06-24 23:36:48,350 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com submodule update --init --force --recursive
Submodule path 'core/src/main/jni/badvpn': checked out 'fb01eb983915c9a09a690ad44c6028dd87500ec7'
Submodule path 'core/src/main/jni/libancillary': checked out '311e5d14f593f16c785bc6605220517eb1f21f6b'
Submodule path 'core/src/main/jni/libevent': checked out 'f29f07bc8c43eec96f227e6f6eede32b3af66168'
Submodule path 'core/src/main/jni/redsocks': checked out 'd9954892ba96627748efab2901f38d7e20d6d0a2'
Submodule path 'core/src/main/rust/shadowsocks-rust': checked out 'e84e76a6821abdf75b5ba393d405b42d07d2dcdd'
2022-06-24 23:36:48,859 INFO: Collecting source libraries
2022-06-24 23:36:48,877 DEBUG: Removing debuggable flags from build/srclib/rustup
2022-06-24 23:36:48,886 INFO: Creating local.properties file at build/com.github.shadowsocks.tv/local.properties
2022-06-24 23:36:48,887 INFO: Creating local.properties file at build/com.github.shadowsocks.tv/tv/local.properties
2022-06-24 23:36:48,887 DEBUG: Removing debuggable flags from build/com.github.shadowsocks.tv/tv
2022-06-24 23:36:48,888 INFO: Removing specified files
2022-06-24 23:36:48,888 INFO: Removing core/src/main/jni/badvpn/lwip/test/fuzz/inputs
2022-06-24 23:36:48,889 INFO: Removing core/src/main/jni/badvpn/lime
2022-06-24 23:36:48,890 INFO: Removing mobile
2022-06-24 23:36:48,907 INFO: Running 'prebuild' commands in build/com.github.shadowsocks.tv/tv
2022-06-24 23:36:48,907 DEBUG: Directory: build/com.github.shadowsocks.tv/tv
2022-06-24 23:36:48,908 DEBUG: > bash -x -c -- echo "rust.rustcCommand=$HOME/.cargo/bin/rustc" >> ../local.properties && echo "rust.cargoCommand=$HOME/.cargo/bin/cargo" >> ../local.properties && echo "rust.pythonCommand=/usr/bin/python3" >> ../local.properties && sed -i -e '/gms/d' -e '/firebase/d' ../build.gradle.kts build.gradle.kts && sed -i -e '/gms/d' -e '/firebase/d' -e '/kotlinx-coroutines-play-services/d' ../core/build.gradle.kts && pushd ../core/src/main && sed -i -E -e '/service_subscription_working/s/%d(.*)%d/%1$d\1%2$d/' res/*/strings.xml && cd java/com/github/shadowsocks && sed -i -e '/firebase/Id' Core.kt bg/BaseService.kt && popd && sed -i -e '/OssLicensesMenuActivity/d' src/main/java/com/github/shadowsocks/tv/MainPreferenceFragment.kt && sed -i -z -E -e 's/<Preference[^<]+ossLicenses[^>]+>//' src/main/res/xml/pref_main.xml && sed -i -e '/isEnable/s/true/false/' ../buildSrc/src/main/kotlin/Helpers.kt
+ echo rust.rustcCommand=/home/vagrant/.cargo/bin/rustc
+ echo rust.cargoCommand=/home/vagrant/.cargo/bin/cargo
+ echo rust.pythonCommand=/usr/bin/python3
+ sed -i -e /gms/d -e /firebase/d ../build.gradle.kts build.gradle.kts
+ sed -i -e /gms/d -e /firebase/d -e /kotlinx-coroutines-play-services/d ../core/build.gradle.kts
+ pushd ../core/src/main
~/build/com.github.shadowsocks.tv/core/src/main ~/build/com.github.shadowsocks.tv/tv
+ sed -i -E -e '/service_subscription_working/s/%d(.*)%d/%1$d\1%2$d/' res/values-ar/strings.xml res/values-es/strings.xml res/values-fa/strings.xml res/values-fr/strings.xml res/values-ja/strings.xml res/values-ko/strings.xml res/values-ru/strings.xml res/values/strings.xml res/values-tr/strings.xml res/values-zh-rCN/strings.xml res/values-zh-rTW/strings.xml
+ cd java/com/github/shadowsocks
+ sed -i -e /firebase/Id Core.kt bg/BaseService.kt
+ popd
~/build/com.github.shadowsocks.tv/tv
+ sed -i -e /OssLicensesMenuActivity/d src/main/java/com/github/shadowsocks/tv/MainPreferenceFragment.kt
+ sed -i -z -E -e 's/<Preference[^<]+ossLicenses[^>]+>//' src/main/res/xml/pref_main.xml
+ sed -i -e /isEnable/s/true/false/ ../buildSrc/src/main/kotlin/Helpers.kt
2022-06-24 23:36:49,115 INFO: Cleaning Gradle project...
2022-06-24 23:36:49,116 DEBUG: Directory: build/com.github.shadowsocks.tv/tv
2022-06-24 23:36:49,116 DEBUG: > /home/vagrant/fdroidserver/gradlew-fdroid clean
Found 7.2 via distributionUrl
Downloading missing gradle version 7.2
cachedir /home/vagrant/.cache/fdroidserver
/home/vagrant/.cache/fdroidserver/gradle-7.2-bin.zip: OK
Running /opt/gradle/versions/7.2/bin/gradle clean

Welcome to Gradle 7.2!

Here are the highlights of this release:
 - Toolchain support for Scala
 - More cache hits when Java source files have platform-specific line endings
 - More resilient remote HTTP build cache behavior

For more details see https://docs.gradle.org/7.2/release-notes.html

To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.2/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 

> Task :buildSrc:compileKotlin
w: /home/vagrant/build/com.github.shadowsocks.tv/buildSrc/src/main/kotlin/Helpers.kt: (2, 26): 'VariantOutput' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks.tv/buildSrc/src/main/kotlin/Helpers.kt: (115, 65): 'VariantOutput' is deprecated. Deprecated in Java

> Task :buildSrc:compileJava NO-SOURCE
> Task :buildSrc:compileGroovy NO-SOURCE
> Task :buildSrc:pluginDescriptors
> Task :buildSrc:processResources NO-SOURCE
> Task :buildSrc:classes UP-TO-DATE
> Task :buildSrc:inspectClassesForKotlinIC

> Task :buildSrc:jar
:jar: No valid plugin descriptors were found in META-INF/gradle-plugins

> Task :buildSrc:assemble
> Task :buildSrc:compileTestKotlin NO-SOURCE
> Task :buildSrc:pluginUnderTestMetadata
> Task :buildSrc:compileTestJava NO-SOURCE
> Task :buildSrc:compileTestGroovy NO-SOURCE
> Task :buildSrc:processTestResources NO-SOURCE
> Task :buildSrc:testClasses UP-TO-DATE
> Task :buildSrc:test NO-SOURCE
> Task :buildSrc:validatePlugins
> Task :buildSrc:check
> Task :buildSrc:build

> Configure project :core
WARNING:The option setting 'android.enableR8.fullMode=true' is experimental.
The current default is 'false'.
WARNING:The option setting 'android.enableResourceOptimizations=false' is deprecated.
The current default is 'true'.
It will be removed in version 8.0 of the Android Gradle plugin.
Warning: No match found for [DefaultTaskExecutionRequest{args=[clean],projectPath='null',rootDir='null'}]
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Configure project :plugin
Checking the license for package Android SDK Build-Tools 32 in /opt/android-sdk/licenses
License for package Android SDK Build-Tools 32 accepted.
Preparing "Install Android SDK Build-Tools 32 (revision: 32.0.0)".
"Install Android SDK Build-Tools 32 (revision: 32.0.0)" ready.
Installing Android SDK Build-Tools 32 in /opt/android-sdk/build-tools/32.0.0
"Install Android SDK Build-Tools 32 (revision: 32.0.0)" complete.
"Install Android SDK Build-Tools 32 (revision: 32.0.0)" finished.
Checking the license for package Android SDK Platform 31 in /opt/android-sdk/licenses
License for package Android SDK Platform 31 accepted.
Preparing "Install Android SDK Platform 31 (revision: 1)".
"Install Android SDK Platform 31 (revision: 1)" ready.
Installing Android SDK Platform 31 in /opt/android-sdk/platforms/android-31
"Install Android SDK Platform 31 (revision: 1)" complete.
"Install Android SDK Platform 31 (revision: 1)" finished.

> Configure project :tv
Warning: No match found for [DefaultTaskExecutionRequest{args=[clean],projectPath='null',rootDir='null'}]

> Task :tv:clean UP-TO-DATE

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 1m 41s
7 actionable tasks: 6 executed, 1 up-to-date
2022-06-24 23:38:33,809 INFO: Scanning source for common problems...
2022-06-24 23:38:33,817 INFO: Removing gradle-wrapper.jar at gradle/wrapper/gradle-wrapper.jar
2022-06-24 23:38:33,915 INFO: Creating source tarball...
2022-06-24 23:38:35,235 INFO: Running 'build' commands in build/com.github.shadowsocks.tv/tv
2022-06-24 23:38:35,236 DEBUG: Directory: build/com.github.shadowsocks.tv/tv
2022-06-24 23:38:35,236 DEBUG: > bash -x -c /home/vagrant/build/srclib/rustup/rustup-init.sh -y && source $HOME/.cargo/env && rustup toolchain install nightly-2022-06-21 && rustup default nightly-2022-06-21 && cd ../core/src/main/rust/shadowsocks-rust && rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
+ /home/vagrant/build/srclib/rustup/rustup-init.sh -y
info: downloading installer
info: profile set to 'default'
info: default host triple is x86_64-unknown-linux-gnu
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: latest update on 2022-05-19, rust version 1.61.0 (fe5b13d68 2022-05-18)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-std'
info: installing component 'rustc'
info: installing component 'rustfmt'
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'

  stable-x86_64-unknown-linux-gnu installed - rustc 1.61.0 (fe5b13d68 2022-05-18)


Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, run:
source $HOME/.cargo/env
+ source /home/vagrant/.cargo/env
++ case ":${PATH}:" in
++ export PATH=/home/vagrant/.cargo/bin:/opt/android-sdk/ndk/21.4.7075529:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/android-sdk/tools:/opt/android-sdk/platform-tools:/opt/gradle/bin
++ PATH=/home/vagrant/.cargo/bin:/opt/android-sdk/ndk/21.4.7075529:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/android-sdk/tools:/opt/android-sdk/platform-tools:/opt/gradle/bin
+ rustup toolchain install nightly-2022-06-21
info: syncing channel updates for 'nightly-2022-06-21-x86_64-unknown-linux-gnu'
info: latest update on 2022-06-21, rust version 1.63.0-nightly (5750a6aa2 2022-06-20)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-std'
info: installing component 'rustc'
info: installing component 'rustfmt'

  nightly-2022-06-21-x86_64-unknown-linux-gnu installed - rustc 1.63.0-nightly (5750a6aa2 2022-06-20)

info: checking for self-updates
+ rustup default nightly-2022-06-21
info: using existing install for 'nightly-2022-06-21-x86_64-unknown-linux-gnu'
info: default toolchain set to 'nightly-2022-06-21-x86_64-unknown-linux-gnu'

  nightly-2022-06-21-x86_64-unknown-linux-gnu unchanged - rustc 1.63.0-nightly (5750a6aa2 2022-06-20)

+ cd ../core/src/main/rust/shadowsocks-rust
+ rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
info: downloading component 'rust-std' for 'armv7-linux-androideabi'
info: installing component 'rust-std' for 'armv7-linux-androideabi'
info: downloading component 'rust-std' for 'aarch64-linux-android'
info: installing component 'rust-std' for 'aarch64-linux-android'
info: downloading component 'rust-std' for 'i686-linux-android'
info: installing component 'rust-std' for 'i686-linux-android'
info: downloading component 'rust-std' for 'x86_64-linux-android'
info: installing component 'rust-std' for 'x86_64-linux-android'
2022-06-24 23:39:13,249 INFO: Building Gradle project...
2022-06-24 23:39:13,250 DEBUG: Directory: build/com.github.shadowsocks.tv/tv
2022-06-24 23:39:13,250 DEBUG: > /home/vagrant/fdroidserver/gradlew-fdroid assembleFreedomRelease
Found 7.2 via distributionUrl
Running /opt/gradle/versions/7.2/bin/gradle assembleFreedomRelease
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.2/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 

> Task :buildSrc:compileKotlin
w: /home/vagrant/build/com.github.shadowsocks.tv/buildSrc/src/main/kotlin/Helpers.kt: (2, 26): 'VariantOutput' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks.tv/buildSrc/src/main/kotlin/Helpers.kt: (115, 65): 'VariantOutput' is deprecated. Deprecated in Java

> Task :buildSrc:compileJava NO-SOURCE
> Task :buildSrc:compileGroovy NO-SOURCE
> Task :buildSrc:pluginDescriptors
> Task :buildSrc:processResources NO-SOURCE
> Task :buildSrc:classes UP-TO-DATE
> Task :buildSrc:inspectClassesForKotlinIC

> Task :buildSrc:jar
:jar: No valid plugin descriptors were found in META-INF/gradle-plugins

> Task :buildSrc:assemble
> Task :buildSrc:compileTestKotlin NO-SOURCE
> Task :buildSrc:pluginUnderTestMetadata
> Task :buildSrc:compileTestJava NO-SOURCE
> Task :buildSrc:compileTestGroovy NO-SOURCE
> Task :buildSrc:processTestResources NO-SOURCE
> Task :buildSrc:testClasses UP-TO-DATE
> Task :buildSrc:test NO-SOURCE
> Task :buildSrc:validatePlugins
> Task :buildSrc:check
> Task :buildSrc:build

> Configure project :core
WARNING:The option setting 'android.enableR8.fullMode=true' is experimental.
The current default is 'false'.
WARNING:The option setting 'android.enableResourceOptimizations=false' is deprecated.
The current default is 'true'.
It will be removed in version 8.0 of the Android Gradle plugin.
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
WARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Task :core:preBuild UP-TO-DATE
> Task :core:preReleaseBuild UP-TO-DATE
> Task :plugin:preBuild UP-TO-DATE
> Task :plugin:preReleaseBuild UP-TO-DATE
> Task :plugin:compileReleaseAidl NO-SOURCE
> Task :plugin:packageReleaseRenderscript NO-SOURCE
> Task :core:compileReleaseRenderscript NO-SOURCE
> Task :core:generateReleaseBuildConfig
> Task :core:generateReleaseResValues
> Task :core:generateReleaseResources
> Task :core:packageReleaseResources
> Task :plugin:compileReleaseRenderscript NO-SOURCE
> Task :plugin:generateReleaseResValues
> Task :plugin:generateReleaseResources
> Task :core:parseReleaseLocalResources

> Task :core:processReleaseManifest
/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/AndroidManifest.xml:113:9-114:40 Warning:
	provider#com.google.firebase.provider.FirebaseInitProvider was tagged at AndroidManifest.xml:113 to remove other declarations but no other declaration present

> Task :plugin:packageReleaseResources
> Task :plugin:parseReleaseLocalResources
> Task :plugin:generateReleaseBuildConfig
> Task :plugin:processReleaseManifest
> Task :plugin:javaPreCompileRelease
> Task :core:compileReleaseAidl
> Task :tv:preBuild UP-TO-DATE
> Task :tv:preFreedomReleaseBuild UP-TO-DATE
> Task :tv:compileFreedomReleaseAidl NO-SOURCE
> Task :core:packageReleaseRenderscript NO-SOURCE
> Task :tv:compileFreedomReleaseRenderscript NO-SOURCE
> Task :core:javaPreCompileRelease
> Task :tv:generateFreedomReleaseBuildConfig
> Task :core:writeReleaseAarMetadata
> Task :plugin:writeReleaseAarMetadata
> Task :tv:generateFreedomReleaseResValues
> Task :tv:generateFreedomReleaseResources
> Task :tv:createFreedomReleaseCompatibleScreenManifests
> Task :core:extractDeepLinksRelease
> Task :plugin:extractDeepLinksRelease
> Task :tv:extractDeepLinksFreedomRelease
> Task :plugin:generateReleaseRFile
> Task :tv:mergeFreedomReleaseResources

> Task :tv:processFreedomReleaseMainManifest
/home/vagrant/build/com.github.shadowsocks.tv/tv/src/main/AndroidManifest.xml:124:9-126:35 Warning:
	provider#com.google.firebase.provider.FirebaseInitProvider was tagged at AndroidManifest.xml:124 to remove other declarations but no other declaration present

> Task :tv:processFreedomReleaseManifest
> Task :tv:javaPreCompileFreedomRelease
> Task :core:configureNdkBuildRelease

> Task :core:buildNdkBuildRelease
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);
C/C++:                         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:         arc4random_addrandom((unsigned char*)buf,
C/C++:         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warning
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:            (                                                          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:                      ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 4 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 1 warning generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warning
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:            (                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:                 ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         } while (p = p->next);
C/C++:                  ~~^~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warning
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                  (          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparison
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                    ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)
C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 13 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);
C/C++:                         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:         arc4random_addrandom((unsigned char*)buf,
C/C++:         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warning
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:            (                                                          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:                      ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 4 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 1 warning generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:450:63: warning: passing 'int *' to parameter of type 'socklen_t *' (aka 'unsigned int *') converts between pointers to integer types with different sign [-Wpointer-sign]
C/C++:         if ((sock2 = accept(sock, (struct sockaddr *)&remote, &t)) == -1) {
C/C++:                                                               ^~
C/C++: /opt/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/sys/socket.h:301:71: note: passing argument to parameter '__addr_length' here
C/C++: __socketcall int accept(int __fd, struct sockaddr* __addr, socklen_t* __addr_length);
C/C++:                                                                       ^
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warning
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:            (                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:                 ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         } while (p = p->next);
C/C++:                  ~~^~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warning
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                  (          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparison
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                    ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)
C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 14 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);
C/C++:                         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:         arc4random_addrandom((unsigned char*)buf,
C/C++:         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warning
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:            (                                                          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:                      ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 4 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 1 warning generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warning
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:            (                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:                 ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         } while (p = p->next);
C/C++:                  ~~^~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warning
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                  (          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparison
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                    ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)
C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 13 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);
C/C++:                         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]
C/C++:         arc4random_addrandom((unsigned char*)buf,
C/C++:         ^
C/C++: 1 warning generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warning
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:            (                                                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {
C/C++:                  ^
C/C++:                  ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:183:56: warning: taking address of packed member 'data' of class or structure 'epoll_event' may result in an unaligned pointer value [-Waddress-of-packed-member]
C/C++:         bfd->epoll_returned_ptr = (BFileDescriptor **)&event->data.ptr;
C/C++:                                                        ^~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warning
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:            (                                                          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {
C/C++:                      ^
C/C++:                      ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 5 warnings generated.
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(res)
C/C++:                    ^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 1 warning generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: 10 warnings generated.
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:
C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = n1->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = n1->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[!side] = c) {
C/C++:             ~~~~~~~~~~~~~~~~^~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:             (                  )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[!side] = c) {
C/C++:                             ^
C/C++:                             ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->parent = n2->parent) {
C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:             (                      )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->parent = n2->parent) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->parent = temp) {
C/C++:             ~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:             (                )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->parent = temp) {
C/C++:                        ^
C/C++:                        ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[0] = n2->link[0]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[0] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[0] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:             (                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n1->link[1] = n2->link[1]) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         if (n2->link[1] = temp) {
C/C++:             ~~~~~~~~~~~~^~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warning
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:             (                 )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparison
C/C++:         if (n2->link[1] = temp) {
C/C++:                         ^
C/C++:                         ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:450:63: warning: passing 'int *' to parameter of type 'socklen_t *' (aka 'unsigned int *') converts between pointers to integer types with different sign [-Wpointer-sign]
C/C++:         if ((sock2 = accept(sock, (struct sockaddr *)&remote, &t)) == -1) {
C/C++:                                                               ^~
C/C++: /opt/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/sys/socket.h:301:71: note: passing argument to parameter '__addr_length' here
C/C++: __socketcall int accept(int __fd, struct sockaddr* __addr, socklen_t* __addr_length);
C/C++:                                                                       ^
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warning
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:            (                                        )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparison
C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {
C/C++:                 ^
C/C++:                 ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
C/C++:         } while (p = p->next);
C/C++:                  ~~^~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warning
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                  (          )
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparison
C/C++:         } while (p = p->next);
C/C++:                    ^
C/C++:                    ==
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]
C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)
C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
C/C++: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'
C/C++:     #define ASSERT_EXECUTE(e) { (e); }
C/C++:                                  ^
C/C++: 14 warnings generated.

> Task :plugin:mergeReleaseJniLibFolders
> Task :plugin:mergeReleaseNativeLibs NO-SOURCE
> Task :plugin:stripReleaseDebugSymbols NO-SOURCE
> Task :plugin:copyReleaseJniLibsProjectOnly
> Task :core:externalNativeBuildRelease
> Task :generateLinkerWrapper

> Task :core:cargoBuildArm
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
    Updating crates.io index

> Task :tv:processFreedomReleaseManifestForPackage

> Task :core:cargoBuildArm
 Downloading crates ...
  Downloaded aes-gcm-siv v0.10.3
  Downloaded base16ct v0.1.1
  Downloaded async-trait v0.1.56
  Downloaded arrayref v0.3.6
  Downloaded arrayvec v0.7.2
  Downloaded const-oid v0.7.1
  Downloaded cipher v0.4.3
  Downloaded byte_string v1.0.0
  Downloaded build-time v0.1.1
  Downloaded blake3 v1.3.1
  Downloaded aho-corasick v0.7.18
  Downloaded arc-swap v1.5.0
  Downloaded aes v0.8.1
  Downloaded atty v0.2.14
  Downloaded cfg-if v1.0.0
  Downloaded bitflags v1.3.2
  Downloaded ecdsa v0.13.4
  Downloaded pin-utils v0.1.0
  Downloaded p256 v0.10.1
  Downloaded pin-project-lite v0.2.9
  Downloaded pest_generator v2.1.3
  Downloaded polyval v0.5.3
  Downloaded poly1305 v0.7.2
  Downloaded ppv-lite86 v0.2.16
  Downloaded sha1-asm v0.5.1
  Downloaded signature v1.4.0
  Downloaded typemap v0.3.3
  Downloaded xdg v2.4.1
  Downloaded md5-asm v0.5.0
  Downloaded unsafe-any v0.4.2
  Downloaded bytes v1.1.0
  Downloaded chacha20poly1305 v0.9.0
  Downloaded inotify-sys v0.1.5
  Downloaded exitcode v1.1.2
  Downloaded enum-as-inner v0.4.0
  Downloaded futures-io v0.3.21
  Downloaded futures-core v0.3.21
  Downloaded derivative v2.2.0
  Downloaded tinyvec_macros v0.1.0
  Downloaded futures-sink v0.3.21
  Downloaded fnv v1.0.7
  Downloaded crossbeam-channel v0.5.4
  Downloaded futures-macro v0.3.21
  Downloaded ed25519 v1.5.2
  Downloaded crossbeam-utils v0.8.8
  Downloaded form_urlencoded v1.0.1
  Downloaded resolv-conf v0.7.0
  Downloaded scopeguard v1.1.0
  Downloaded terminal_size v0.1.17
  Downloaded spin v0.5.2
  Downloaded thiserror v1.0.31
  Downloaded subtle v2.4.1
  Downloaded tokio-macros v1.7.0
  Downloaded socket2 v0.4.4
  Downloaded untrusted v0.7.1
  Downloaded time v0.1.43
  Downloaded tinyvec v1.6.0
  Downloaded spin v0.9.3
  Downloaded serde v1.0.137
  Downloaded textwrap v0.15.0
  Downloaded version_check v0.9.4
  Downloaded unicode-ident v1.0.0
  Downloaded zeroize v1.3.0
  Downloaded walkdir v2.3.2
  Downloaded syn v1.0.96
  Downloaded trust-dns-resolver v0.21.2
  Downloaded yaml-rust v0.4.5
  Downloaded url v2.2.2
  Downloaded unicode-normalization v0.1.19
  Downloaded ghash v0.4.4
  Downloaded trust-dns-proto v0.21.2
  Downloaded tokio v1.18.2
  Downloaded os_str_bytes v6.1.0
  Downloaded lru-cache v0.1.2
  Downloaded opaque-debug v0.3.0
  Downloaded ring v0.16.20
  Downloaded percent-encoding v2.1.0
  Downloaded parking_lot v0.12.1
  Downloaded libc v0.2.126
  Downloaded num-traits v0.2.15
  Downloaded once_cell v1.12.0
  Downloaded log-mdc v0.1.0
  Downloaded humantime v2.1.0
  Downloaded mio v0.8.3
  Downloaded futures-executor v0.3.21
  Downloaded regex-syntax v0.6.26
  Downloaded num-integer v0.1.45
  Downloaded maplit v1.0.2
  Downloaded hmac v0.12.1
  Downloaded num_cpus v1.13.1
  Downloaded log4rs v1.1.1
  Downloaded regex v1.5.6
  Downloaded md-5 v0.10.1
  Downloaded serde_json v1.0.81
  Downloaded p384 v0.9.0
  Downloaded memchr v2.5.0
  Downloaded futures-task v0.3.21
  Downloaded typenum v1.15.0
  Downloaded matches v0.1.9
  Downloaded ucd-trie v0.1.3
  Downloaded idna v0.2.3
  Downloaded unicode-bidi v0.3.8
  Downloaded lru_time_cache v0.11.11
  Downloaded linked-hash-map v0.5.4
  Downloaded lazy_static v1.4.0
  Downloaded ipnet v2.5.0
  Downloaded smallvec v1.8.0
  Downloaded itoa v1.0.2
  Downloaded heck v0.4.0
  Downloaded directories v4.0.1
  Downloaded match_cfg v0.1.0
  Downloaded json5 v0.4.1
  Downloaded indexmap v1.8.2
  Downloaded hkdf v0.12.3
  Downloaded hashbrown v0.11.2
  Downloaded log v0.4.17
  Downloaded lock_api v0.4.7
  Downloaded hostname v0.3.1
  Downloaded generic-array v0.14.5
  Downloaded rand_chacha v0.3.1
  Downloaded getrandom v0.2.6
  Downloaded rand v0.8.5
  Downloaded universal-hash v0.4.1
  Downloaded slab v0.4.6
  Downloaded byteorder v1.4.3
  Downloaded serde_derive v1.0.137
  Downloaded thiserror-impl v1.0.31
  Downloaded ryu v1.0.10
  Downloaded cpufeatures v0.2.2
  Downloaded digest v0.9.0
  Downloaded termcolor v1.1.3
  Downloaded signal-hook-registry v1.4.0
  Downloaded generic-array v0.12.4
  Downloaded digest v0.8.1
  Downloaded fake-simd v0.1.2
  Downloaded strsim v0.10.0
  Downloaded serde_urlencoded v0.7.1
  Downloaded same-file v1.0.6
  Downloaded quote v1.0.18
  Downloaded proc-macro2 v1.0.39
  Downloaded iprange v0.6.7
  Downloaded inotify v0.9.6
  Downloaded ccm v0.4.4
  Downloaded rand_core v0.6.3
  Downloaded inout v0.1.3
  Downloaded futures-util v0.3.21
  Downloaded futures v0.3.21
  Downloaded quick-error v1.2.3
  Downloaded notify v5.0.0-pre.15
  Downloaded futures-channel v0.3.21
  Downloaded digest v0.10.3
  Downloaded data-encoding v2.3.2
  Downloaded ctr v0.8.0
  Downloaded dirs-sys v0.3.7
  Downloaded dirs v4.0.0
  Downloaded daemonize v0.4.1
  Downloaded filetime v0.2.16
  Downloaded elliptic-curve v0.11.12
  Downloaded clap v3.1.18
  Downloaded chrono v0.4.19
  Downloaded aes-gcm v0.9.4
  Downloaded cc v1.0.73
  Downloaded aes v0.7.5
  Downloaded tokio-tfo v0.2.0
  Downloaded traitobject v0.1.0
  Downloaded thread-id v4.0.0
  Downloaded serde_yaml v0.8.24
  Downloaded shadowsocks-crypto v0.4.0
  Downloaded sha-1 v0.8.2
  Downloaded sha1 v0.10.1
  Downloaded serde-value v0.7.0
  Downloaded sendfd v0.4.1
  Downloaded sec1 v0.2.1
  Downloaded rpassword v6.0.1
  Downloaded ring-compat v0.4.1
  Downloaded pin-project v1.0.10
  Downloaded pest v2.1.3
  Downloaded constant_time_eq v0.1.5
  Downloaded anyhow v1.0.57
  Downloaded pin-project-internal v1.0.10
  Downloaded crypto-common v0.1.3
  Downloaded cipher v0.3.0
  Downloaded pest_meta v2.1.3
  Downloaded clap_lex v0.2.0
  Downloaded base64 v0.13.0
  Downloaded parking_lot_core v0.9.3
  Downloaded boxfnonce v0.1.1
  Downloaded pest_derive v2.1.0
  Downloaded ordered-float v2.10.0
  Downloaded chacha20 v0.8.1
  Downloaded block-buffer v0.7.3
  Downloaded aead v0.4.3
  Downloaded opaque-debug v0.2.3
  Downloaded block-buffer v0.10.2
  Downloaded block-padding v0.1.5
  Downloaded byte-tools v0.3.1
  Downloaded der v0.5.1
  Downloaded crypto-bigint v0.3.2
  Downloaded autocfg v1.1.0
 Downloading crates ...
  Downloaded env_logger v0.9.0
   Compiling proc-macro2 v1.0.39
   Compiling libc v0.2.126
   Compiling unicode-ident v1.0.0
   Compiling syn v1.0.96
   Compiling autocfg v1.1.0
   Compiling cfg-if v1.0.0
   Compiling typenum v1.15.0
   Compiling version_check v0.9.4
   Compiling serde_derive v1.0.137
   Compiling serde v1.0.137
   Compiling subtle v2.4.1
   Compiling memchr v2.5.0
   Compiling scopeguard v1.1.0
   Compiling log v0.4.17
   Compiling parking_lot_core v0.9.3
   Compiling futures-core v0.3.21
   Compiling smallvec v1.8.0
   Compiling pin-project-lite v0.2.9
   Compiling futures-task v0.3.21
   Compiling opaque-debug v0.3.0
   Compiling futures-channel v0.3.21
   Compiling futures-sink v0.3.21
   Compiling futures-util v0.3.21
   Compiling bytes v1.1.0
   Compiling matches v0.1.9
   Compiling tinyvec_macros v0.1.0
   Compiling pin-utils v0.1.0
   Compiling slab v0.4.6
   Compiling futures-io v0.3.21
   Compiling lazy_static v1.4.0
   Compiling ryu v1.0.10
   Compiling linked-hash-map v0.5.4
   Compiling ppv-lite86 v0.2.16
   Compiling once_cell v1.12.0
   Compiling percent-encoding v2.1.0
   Compiling cc v1.0.73
   Compiling async-trait v0.1.56
   Compiling zeroize v1.3.0
   Compiling crossbeam-utils v0.8.8
   Compiling itoa v1.0.2
   Compiling unicode-bidi v0.3.8
   Compiling ucd-trie v0.1.3
   Compiling serde_json v1.0.81
   Compiling maplit v1.0.2
   Compiling ipnet v2.5.0
   Compiling match_cfg v0.1.0
   Compiling heck v0.4.0
   Compiling data-encoding v2.3.2
   Compiling constant_time_eq v0.1.5
   Compiling hashbrown v0.11.2
   Compiling arrayvec v0.7.2
   Compiling same-file v1.0.6
   Compiling arrayref v0.3.6
   Compiling quick-error v1.2.3
   Compiling bitflags v1.3.2
   Compiling traitobject v0.1.0
   Compiling anyhow v1.0.57
   Compiling arc-swap v1.5.0
   Compiling byte_string v1.0.0
   Compiling lru_time_cache v0.11.11
   Compiling os_str_bytes v6.1.0
   Compiling base64 v0.13.0
   Compiling regex-syntax v0.6.26
   Compiling byteorder v1.4.3
   Compiling fnv v1.0.7
   Compiling termcolor v1.1.3
   Compiling strsim v0.10.0
   Compiling boxfnonce v0.1.1
   Compiling log-mdc v0.1.0
   Compiling humantime v2.1.0
   Compiling exitcode v1.1.2
   Compiling generic-array v0.14.5
   Compiling lock_api v0.4.7
   Compiling num-integer v0.1.45
   Compiling num-traits v0.2.15
   Compiling indexmap v1.8.2
   Compiling tinyvec v1.6.0
   Compiling lru-cache v0.1.2
   Compiling yaml-rust v0.4.5
   Compiling form_urlencoded v1.0.1
   Compiling pest v2.1.3
   Compiling iprange v0.6.7
   Compiling blake3 v1.3.1
   Compiling walkdir v2.3.2
   Compiling unsafe-any v0.4.2
   Compiling clap_lex v0.2.0
   Compiling unicode-normalization v0.1.19
   Compiling pest_meta v2.1.3
   Compiling typemap v0.3.3
   Compiling getrandom v0.2.6
   Compiling num_cpus v1.13.1
   Compiling socket2 v0.4.4
   Compiling signal-hook-registry v1.4.0
   Compiling hostname v0.3.1
   Compiling filetime v0.2.16
   Compiling dirs-sys v0.3.7
   Compiling terminal_size v0.1.17
   Compiling time v0.1.43
   Compiling atty v0.2.14
   Compiling thread-id v4.0.0
   Compiling daemonize v0.4.1
   Compiling quote v1.0.18
   Compiling aho-corasick v0.7.18
   Compiling crossbeam-channel v0.5.4
   Compiling idna v0.2.3
   Compiling parking_lot v0.12.1
   Compiling spin v0.9.3
   Compiling rand_core v0.6.3
   Compiling resolv-conf v0.7.0
   Compiling dirs v4.0.0
   Compiling directories v4.0.1
   Compiling textwrap v0.15.0
   Compiling regex v1.5.6
   Compiling ordered-float v2.10.0
   Compiling notify v5.0.0-pre.15
   Compiling crypto-common v0.1.3
   Compiling cipher v0.3.0
   Compiling block-buffer v0.10.2
   Compiling universal-hash v0.4.1
   Compiling aead v0.4.3
   Compiling inout v0.1.3
   Compiling rand_chacha v0.3.1
   Compiling xdg v2.4.1
   Compiling clap v3.1.18
   Compiling chrono v0.4.19
   Compiling polyval v0.5.3
   Compiling poly1305 v0.7.2
   Compiling digest v0.10.3
   Compiling ctr v0.8.0
   Compiling chacha20 v0.8.1
   Compiling cipher v0.4.3
   Compiling rand v0.8.5
   Compiling ghash v0.4.4
   Compiling hmac v0.12.1
   Compiling sha1 v0.10.1
   Compiling md-5 v0.10.1
   Compiling aes v0.7.5
   Compiling ccm v0.4.4
   Compiling chacha20poly1305 v0.9.0
   Compiling aes v0.8.1
   Compiling hkdf v0.12.3
   Compiling aes-gcm-siv v0.10.3
   Compiling aes-gcm v0.9.4
   Compiling pest_generator v2.1.3
   Compiling shadowsocks-crypto v0.4.0
   Compiling futures-macro v0.3.21
   Compiling tokio-macros v1.7.0
   Compiling thiserror-impl v1.0.31
   Compiling pin-project-internal v1.0.10
   Compiling enum-as-inner v0.4.0
   Compiling pest_derive v2.1.0
   Compiling derivative v2.2.0
   Compiling build-time v0.1.1
   Compiling thiserror v1.0.31
   Compiling pin-project v1.0.10
   Compiling futures-executor v0.3.21
   Compiling futures v0.3.21
   Compiling url v2.2.2
   Compiling serde_urlencoded v0.7.1
   Compiling json5 v0.4.1
   Compiling serde_yaml v0.8.24
   Compiling serde-value v0.7.0
   Compiling mio v0.8.3
   Compiling tokio v1.18.2
   Compiling rpassword v6.0.1
   Compiling log4rs v1.1.1
   Compiling trust-dns-proto v0.21.2
   Compiling sendfd v0.4.1
   Compiling tokio-tfo v0.2.0
   Compiling trust-dns-resolver v0.21.2
   Compiling shadowsocks v1.15.0 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)
   Compiling shadowsocks-service v1.15.0 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)
   Compiling shadowsocks-rust v1.15.0-alpha.5 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust)
    Finished release [optimized] target(s) in 3m 20s

> Task :core:cargoBuildArm64
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
   Compiling cfg-if v1.0.0
   Compiling subtle v2.4.1
   Compiling zeroize v1.3.0
   Compiling opaque-debug v0.3.0
   Compiling scopeguard v1.1.0
   Compiling const-oid v0.7.1
   Compiling pin-project-lite v0.2.9
   Compiling smallvec v1.8.0
   Compiling futures-sink v0.3.21
   Compiling bytes v1.1.0
   Compiling tinyvec_macros v0.1.0
   Compiling pin-utils v0.1.0
   Compiling futures-io v0.3.21
   Compiling base16ct v0.1.1
   Compiling matches v0.1.9
   Compiling slab v0.4.6
   Compiling once_cell v1.12.0
   Compiling lazy_static v1.4.0
   Compiling percent-encoding v2.1.0
   Compiling ryu v1.0.10
   Compiling ppv-lite86 v0.2.16
   Compiling linked-hash-map v0.5.4
   Compiling itoa v1.0.2
   Compiling unicode-bidi v0.3.8
   Compiling match_cfg v0.1.0
   Compiling spin v0.5.2
   Compiling ipnet v2.5.0
   Compiling untrusted v0.7.1
   Compiling same-file v1.0.6
   Compiling hashbrown v0.11.2
   Compiling constant_time_eq v0.1.5
   Compiling quick-error v1.2.3
   Compiling data-encoding v2.3.2
   Compiling arrayvec v0.7.2
   Compiling bitflags v1.3.2
   Compiling arrayref v0.3.6
   Compiling traitobject v0.1.0
   Compiling ucd-trie v0.1.3
   Compiling arc-swap v1.5.0
   Compiling base64 v0.13.0
   Compiling lru_time_cache v0.11.11
   Compiling os_str_bytes v6.1.0
   Compiling regex-syntax v0.6.26
   Compiling byte_string v1.0.0
   Compiling strsim v0.10.0
   Compiling termcolor v1.1.3
   Compiling byteorder v1.4.3
   Compiling fnv v1.0.7
   Compiling humantime v2.1.0
   Compiling log-mdc v0.1.0
   Compiling boxfnonce v0.1.1
   Compiling exitcode v1.1.2
   Compiling libc v0.2.126
   Compiling typenum v1.15.0
   Compiling serde v1.0.137
   Compiling memchr v2.5.0
   Compiling futures-core v0.3.21
   Compiling parking_lot_core v0.9.3
   Compiling log v0.4.17
   Compiling futures-channel v0.3.21
   Compiling futures-task v0.3.21
   Compiling ring v0.16.20
   Compiling futures-util v0.3.21
   Compiling der v0.5.1
   Compiling tinyvec v1.6.0
   Compiling form_urlencoded v1.0.1
   Compiling crossbeam-utils v0.8.8
   Compiling serde_json v1.0.81
   Compiling lru-cache v0.1.2
   Compiling yaml-rust v0.4.5
   Compiling walkdir v2.3.2
   Compiling iprange v0.6.7
   Compiling unsafe-any v0.4.2
   Compiling anyhow v1.0.57
   Compiling pest v2.1.3
   Compiling clap_lex v0.2.0
   Compiling generic-array v0.14.5
   Compiling lock_api v0.4.7
   Compiling num-integer v0.1.45
   Compiling num-traits v0.2.15
   Compiling indexmap v1.8.2
   Compiling blake3 v1.3.1
   Compiling unicode-normalization v0.1.19
   Compiling typemap v0.3.3
   Compiling aho-corasick v0.7.18
   Compiling getrandom v0.2.6
   Compiling cpufeatures v0.2.2
   Compiling socket2 v0.4.4
   Compiling signal-hook-registry v1.4.0
   Compiling num_cpus v1.13.1
   Compiling hostname v0.3.1
   Compiling filetime v0.2.16
   Compiling dirs-sys v0.3.7
   Compiling time v0.1.43
   Compiling terminal_size v0.1.17
   Compiling thread-id v4.0.0
   Compiling atty v0.2.14
   Compiling daemonize v0.4.1
   Compiling crossbeam-channel v0.5.4
   Compiling spin v0.9.3
   Compiling idna v0.2.3
   Compiling rand_core v0.6.3
   Compiling regex v1.5.6
   Compiling crypto-common v0.1.3
   Compiling cipher v0.3.0
   Compiling block-buffer v0.10.2
   Compiling universal-hash v0.4.1
   Compiling aead v0.4.3
   Compiling sec1 v0.2.1
   Compiling digest v0.9.0
   Compiling inout v0.1.3
   Compiling parking_lot v0.12.1
   Compiling resolv-conf v0.7.0
   Compiling dirs v4.0.0
   Compiling directories v4.0.1
   Compiling textwrap v0.15.0
   Compiling notify v5.0.0-pre.15
   Compiling signature v1.4.0
   Compiling crypto-bigint v0.3.2
   Compiling rand_chacha v0.3.1
   Compiling ordered-float v2.10.0
   Compiling ctr v0.8.0
   Compiling chacha20 v0.8.1
   Compiling polyval v0.5.3
   Compiling poly1305 v0.7.2
   Compiling digest v0.10.3
   Compiling cipher v0.4.3
   Compiling xdg v2.4.1
   Compiling clap v3.1.18
   Compiling thiserror v1.0.31
   Compiling pin-project v1.0.10
   Compiling ed25519 v1.5.2
   Compiling rand v0.8.5
   Compiling chrono v0.4.19
   Compiling elliptic-curve v0.11.12
   Compiling aes v0.7.5
   Compiling ccm v0.4.4
   Compiling chacha20poly1305 v0.9.0
   Compiling ghash v0.4.4
   Compiling hmac v0.12.1
   Compiling sha1 v0.10.1
   Compiling md-5 v0.10.1
   Compiling aes v0.8.1
   Compiling ecdsa v0.13.4
   Compiling aes-gcm-siv v0.10.3
   Compiling aes-gcm v0.9.4
   Compiling hkdf v0.12.3
   Compiling p384 v0.9.0
   Compiling p256 v0.10.1
   Compiling futures-executor v0.3.21
   Compiling ring-compat v0.4.1
   Compiling futures v0.3.21
   Compiling url v2.2.2
   Compiling serde_urlencoded v0.7.1
   Compiling serde-value v0.7.0
   Compiling json5 v0.4.1
   Compiling serde_yaml v0.8.24
   Compiling shadowsocks-crypto v0.4.0
   Compiling mio v0.8.3
   Compiling rpassword v6.0.1
   Compiling tokio v1.18.2
   Compiling log4rs v1.1.1
   Compiling trust-dns-proto v0.21.2
   Compiling sendfd v0.4.1
   Compiling tokio-tfo v0.2.0
   Compiling trust-dns-resolver v0.21.2
   Compiling shadowsocks v1.15.0 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)
   Compiling shadowsocks-service v1.15.0 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)
   Compiling shadowsocks-rust v1.15.0-alpha.5 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust)
    Finished release [optimized] target(s) in 2m 16s

> Task :core:cargoBuildX86
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
   Compiling cfg-if v1.0.0
   Compiling subtle v2.4.1
   Compiling cpufeatures v0.2.2
   Compiling scopeguard v1.1.0
   Compiling pin-project-lite v0.2.9
   Compiling smallvec v1.8.0
   Compiling opaque-debug v0.3.0
   Compiling futures-sink v0.3.21
   Compiling matches v0.1.9
   Compiling tinyvec_macros v0.1.0
   Compiling slab v0.4.6
   Compiling bytes v1.1.0
   Compiling futures-io v0.3.21
   Compiling pin-utils v0.1.0
   Compiling ryu v1.0.10
   Compiling lazy_static v1.4.0
   Compiling percent-encoding v2.1.0
   Compiling ppv-lite86 v0.2.16
   Compiling once_cell v1.12.0
   Compiling linked-hash-map v0.5.4
   Compiling zeroize v1.3.0
   Compiling itoa v1.0.2
   Compiling unicode-bidi v0.3.8
   Compiling ipnet v2.5.0
   Compiling match_cfg v0.1.0
   Compiling constant_time_eq v0.1.5
   Compiling bitflags v1.3.2
   Compiling data-encoding v2.3.2
   Compiling same-file v1.0.6
   Compiling arrayref v0.3.6
   Compiling arrayvec v0.7.2
   Compiling hashbrown v0.11.2
   Compiling quick-error v1.2.3
   Compiling ucd-trie v0.1.3
   Compiling traitobject v0.1.0
   Compiling arc-swap v1.5.0
   Compiling regex-syntax v0.6.26
   Compiling base64 v0.13.0
   Compiling os_str_bytes v6.1.0
   Compiling lru_time_cache v0.11.11
   Compiling byte_string v1.0.0
   Compiling byteorder v1.4.3
   Compiling fnv v1.0.7
   Compiling log-mdc v0.1.0
   Compiling strsim v0.10.0
   Compiling boxfnonce v0.1.1
   Compiling termcolor v1.1.3
   Compiling humantime v2.1.0
   Compiling exitcode v1.1.2
   Compiling libc v0.2.126
   Compiling typenum v1.15.0
   Compiling serde v1.0.137
   Compiling memchr v2.5.0
   Compiling futures-core v0.3.21
   Compiling parking_lot_core v0.9.3
   Compiling md5-asm v0.5.0
   Compiling sha1-asm v0.5.1
   Compiling log v0.4.17
   Compiling futures-channel v0.3.21
   Compiling futures-task v0.3.21
   Compiling futures-util v0.3.21
   Compiling tinyvec v1.6.0
   Compiling form_urlencoded v1.0.1
   Compiling crossbeam-utils v0.8.8
   Compiling serde_json v1.0.81
   Compiling lru-cache v0.1.2
   Compiling yaml-rust v0.4.5
   Compiling walkdir v2.3.2
   Compiling iprange v0.6.7
   Compiling pest v2.1.3
   Compiling unsafe-any v0.4.2
   Compiling anyhow v1.0.57
   Compiling clap_lex v0.2.0
   Compiling lock_api v0.4.7
   Compiling num-integer v0.1.45
   Compiling num-traits v0.2.15
   Compiling indexmap v1.8.2
   Compiling generic-array v0.14.5
   Compiling blake3 v1.3.1
   Compiling typemap v0.3.3
   Compiling unicode-normalization v0.1.19
   Compiling aho-corasick v0.7.18
   Compiling getrandom v0.2.6
   Compiling signal-hook-registry v1.4.0
   Compiling socket2 v0.4.4
   Compiling num_cpus v1.13.1
   Compiling hostname v0.3.1
   Compiling dirs-sys v0.3.7
   Compiling filetime v0.2.16
   Compiling terminal_size v0.1.17
   Compiling time v0.1.43
   Compiling atty v0.2.14
   Compiling thread-id v4.0.0
   Compiling daemonize v0.4.1
   Compiling crossbeam-channel v0.5.4
   Compiling spin v0.9.3
   Compiling parking_lot v0.12.1
   Compiling rand_core v0.6.3
   Compiling idna v0.2.3
   Compiling resolv-conf v0.7.0
   Compiling dirs v4.0.0
   Compiling directories v4.0.1
   Compiling regex v1.5.6
   Compiling textwrap v0.15.0
   Compiling ordered-float v2.10.0
   Compiling crypto-common v0.1.3
   Compiling cipher v0.3.0
   Compiling universal-hash v0.4.1
   Compiling block-buffer v0.10.2
   Compiling aead v0.4.3
   Compiling inout v0.1.3
   Compiling rand_chacha v0.3.1
   Compiling notify v5.0.0-pre.15
   Compiling xdg v2.4.1
   Compiling clap v3.1.18
   Compiling thiserror v1.0.31
   Compiling pin-project v1.0.10
   Compiling ctr v0.8.0
   Compiling chacha20 v0.8.1
   Compiling polyval v0.5.3
   Compiling poly1305 v0.7.2
   Compiling chrono v0.4.19
   Compiling digest v0.10.3
   Compiling cipher v0.4.3
   Compiling rand v0.8.5
   Compiling aes v0.7.5
   Compiling ccm v0.4.4
   Compiling ghash v0.4.4
   Compiling chacha20poly1305 v0.9.0
   Compiling hmac v0.12.1
   Compiling md-5 v0.10.1
   Compiling sha1 v0.10.1
   Compiling aes v0.8.1
   Compiling futures-executor v0.3.21
   Compiling aes-gcm-siv v0.10.3
   Compiling aes-gcm v0.9.4
   Compiling hkdf v0.12.3
   Compiling futures v0.3.21
   Compiling url v2.2.2
   Compiling serde_urlencoded v0.7.1
   Compiling json5 v0.4.1
   Compiling serde-value v0.7.0
   Compiling serde_yaml v0.8.24
   Compiling shadowsocks-crypto v0.4.0
   Compiling mio v0.8.3
   Compiling rpassword v6.0.1
   Compiling log4rs v1.1.1
   Compiling tokio v1.18.2
   Compiling trust-dns-proto v0.21.2
   Compiling tokio-tfo v0.2.0
   Compiling sendfd v0.4.1
   Compiling trust-dns-resolver v0.21.2
   Compiling shadowsocks v1.15.0 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)
   Compiling shadowsocks-service v1.15.0 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)
   Compiling shadowsocks-rust v1.15.0-alpha.5 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust)
    Finished release [optimized] target(s) in 2m 09s

> Task :core:cargoBuildX86_64
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir
   Compiling cfg-if v1.0.0
   Compiling subtle v2.4.1
   Compiling zeroize v1.3.0
   Compiling cpufeatures v0.2.2
   Compiling scopeguard v1.1.0
   Compiling opaque-debug v0.3.0
   Compiling const-oid v0.7.1
   Compiling smallvec v1.8.0
   Compiling pin-project-lite v0.2.9
   Compiling futures-sink v0.3.21
   Compiling matches v0.1.9
   Compiling base16ct v0.1.1
   Compiling tinyvec_macros v0.1.0
   Compiling slab v0.4.6
   Compiling pin-utils v0.1.0
   Compiling bytes v1.1.0
   Compiling futures-io v0.3.21
   Compiling percent-encoding v2.1.0
   Compiling linked-hash-map v0.5.4
   Compiling lazy_static v1.4.0
   Compiling ryu v1.0.10
   Compiling once_cell v1.12.0
   Compiling ppv-lite86 v0.2.16
   Compiling itoa v1.0.2
   Compiling unicode-bidi v0.3.8
   Compiling ipnet v2.5.0
   Compiling untrusted v0.7.1
   Compiling spin v0.5.2
   Compiling match_cfg v0.1.0
   Compiling hashbrown v0.11.2
   Compiling arrayref v0.3.6
   Compiling constant_time_eq v0.1.5
   Compiling same-file v1.0.6
   Compiling arrayvec v0.7.2
   Compiling data-encoding v2.3.2
   Compiling quick-error v1.2.3
   Compiling bitflags v1.3.2
   Compiling traitobject v0.1.0
   Compiling arc-swap v1.5.0
   Compiling ucd-trie v0.1.3
   Compiling regex-syntax v0.6.26
   Compiling base64 v0.13.0
   Compiling os_str_bytes v6.1.0
   Compiling lru_time_cache v0.11.11
   Compiling byte_string v1.0.0
   Compiling fnv v1.0.7
   Compiling byteorder v1.4.3
   Compiling log-mdc v0.1.0
   Compiling boxfnonce v0.1.1
   Compiling strsim v0.10.0
   Compiling termcolor v1.1.3
   Compiling humantime v2.1.0
   Compiling exitcode v1.1.2
   Compiling libc v0.2.126
   Compiling typenum v1.15.0
   Compiling serde v1.0.137
   Compiling memchr v2.5.0
   Compiling parking_lot_core v0.9.3
   Compiling log v0.4.17
   Compiling futures-core v0.3.21
   Compiling futures-channel v0.3.21
   Compiling futures-task v0.3.21
   Compiling futures-util v0.3.21
   Compiling der v0.5.1
   Compiling tinyvec v1.6.0
   Compiling lru-cache v0.1.2
   Compiling yaml-rust v0.4.5
   Compiling form_urlencoded v1.0.1
   Compiling crossbeam-utils v0.8.8
   Compiling serde_json v1.0.81
   Compiling walkdir v2.3.2
   Compiling iprange v0.6.7
   Compiling anyhow v1.0.57
   Compiling unsafe-any v0.4.2
   Compiling pest v2.1.3
   Compiling clap_lex v0.2.0
   Compiling generic-array v0.14.5
   Compiling lock_api v0.4.7
   Compiling num-integer v0.1.45
   Compiling num-traits v0.2.15
   Compiling sha1-asm v0.5.1
   Compiling md5-asm v0.5.0
   Compiling ring v0.16.20
   Compiling blake3 v1.3.1
   Compiling indexmap v1.8.2
   Compiling typemap v0.3.3
   Compiling unicode-normalization v0.1.19
   Compiling getrandom v0.2.6
   Compiling signal-hook-registry v1.4.0
   Compiling socket2 v0.4.4
   Compiling num_cpus v1.13.1
   Compiling hostname v0.3.1
   Compiling filetime v0.2.16
   Compiling dirs-sys v0.3.7
   Compiling terminal_size v0.1.17
   Compiling time v0.1.43
   Compiling atty v0.2.14
   Compiling thread-id v4.0.0
   Compiling daemonize v0.4.1
   Compiling aho-corasick v0.7.18
   Compiling crossbeam-channel v0.5.4
   Compiling spin v0.9.3
   Compiling rand_core v0.6.3
   Compiling parking_lot v0.12.1
   Compiling resolv-conf v0.7.0
   Compiling idna v0.2.3
   Compiling dirs v4.0.0
   Compiling directories v4.0.1
   Compiling textwrap v0.15.0
   Compiling crypto-common v0.1.3
   Compiling cipher v0.3.0
   Compiling block-buffer v0.10.2
   Compiling universal-hash v0.4.1
   Compiling sec1 v0.2.1
   Compiling aead v0.4.3
   Compiling digest v0.9.0
   Compiling inout v0.1.3
   Compiling signature v1.4.0
   Compiling crypto-bigint v0.3.2
   Compiling rand_chacha v0.3.1
   Compiling ordered-float v2.10.0
   Compiling notify v5.0.0-pre.15
   Compiling regex v1.5.6
   Compiling xdg v2.4.1
   Compiling clap v3.1.18
   Compiling ctr v0.8.0
   Compiling chacha20 v0.8.1
   Compiling polyval v0.5.3
   Compiling poly1305 v0.7.2
   Compiling digest v0.10.3
   Compiling thiserror v1.0.31
   Compiling pin-project v1.0.10
   Compiling cipher v0.4.3
   Compiling ed25519 v1.5.2
   Compiling rand v0.8.5
   Compiling chrono v0.4.19
   Compiling elliptic-curve v0.11.12
   Compiling aes v0.7.5
   Compiling ccm v0.4.4
   Compiling ghash v0.4.4
   Compiling chacha20poly1305 v0.9.0
   Compiling hmac v0.12.1
   Compiling md-5 v0.10.1
   Compiling sha1 v0.10.1
   Compiling aes v0.8.1
   Compiling ecdsa v0.13.4
   Compiling url v2.2.2
   Compiling serde_urlencoded v0.7.1
   Compiling serde_yaml v0.8.24
   Compiling serde-value v0.7.0
   Compiling json5 v0.4.1
   Compiling aes-gcm-siv v0.10.3
   Compiling aes-gcm v0.9.4
   Compiling hkdf v0.12.3
   Compiling p256 v0.10.1
   Compiling p384 v0.9.0
   Compiling mio v0.8.3
   Compiling futures-executor v0.3.21
   Compiling rpassword v6.0.1
   Compiling log4rs v1.1.1
   Compiling ring-compat v0.4.1
   Compiling futures v0.3.21
   Compiling tokio v1.18.2
   Compiling shadowsocks-crypto v0.4.0
   Compiling trust-dns-proto v0.21.2
   Compiling sendfd v0.4.1
   Compiling tokio-tfo v0.2.0
   Compiling trust-dns-resolver v0.21.2
   Compiling shadowsocks v1.15.0 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)
   Compiling shadowsocks-service v1.15.0 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)
   Compiling shadowsocks-rust v1.15.0-alpha.5 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust)
    Finished release [optimized] target(s) in 2m 12s

> Task :core:cargoBuild
> Task :core:mergeReleaseJniLibFolders
> Task :core:mergeReleaseShaders
> Task :core:compileReleaseShaders NO-SOURCE
> Task :core:generateReleaseAssets UP-TO-DATE
> Task :core:packageReleaseAssets
> Task :core:prepareLintJarForPublish
> Task :core:prepareReleaseArtProfile
> Task :core:processReleaseJavaRes NO-SOURCE
> Task :core:mergeReleaseNativeLibs
> Task :tv:checkFreedomReleaseAarMetadata

> Task :core:stripReleaseDebugSymbols
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Task :core:writeReleaseLintModelMetadata
> Task :plugin:copyReleaseJniLibsProjectAndLocalJars
> Task :plugin:mergeReleaseShaders
> Task :plugin:compileReleaseShaders NO-SOURCE
> Task :plugin:generateReleaseAssets UP-TO-DATE
> Task :plugin:packageReleaseAssets
> Task :plugin:prepareLintJarForPublish
> Task :plugin:prepareReleaseArtProfile
> Task :plugin:processReleaseJavaRes NO-SOURCE
> Task :plugin:writeReleaseLintModelMetadata
> Task :tv:extractProguardFiles
> Task :core:copyReleaseJniLibsProjectAndLocalJars
> Task :core:copyReleaseJniLibsProjectOnly
> Task :core:generateReleaseRFile
> Task :plugin:compileReleaseKotlin
> Task :plugin:compileReleaseJavaWithJavac
> Task :plugin:bundleLibCompileToJarRelease
warn: removing resource com.github.shadowsocks.tv:string/advanced without required default value.
warn: removing resource com.github.shadowsocks.tv:string/auto_connect_summary_v24 without required default value.
warn: removing resource com.github.shadowsocks.tv:string/invalid_server without required default value.
warn: removing resource com.github.shadowsocks.tv:string/night_mode without required default value.
warn: removing resource com.github.shadowsocks.tv:string/night_mode_auto without required default value.
warn: removing resource com.github.shadowsocks.tv:string/night_mode_off without required default value.
warn: removing resource com.github.shadowsocks.tv:string/night_mode_on without required default value.
warn: removing resource com.github.shadowsocks.tv:string/night_mode_system without required default value.
warn: removing resource com.github.shadowsocks.tv:string/received without required default value.
warn: removing resource com.github.shadowsocks.tv:string/sent without required default value.
warn: removing resource com.github.shadowsocks.tv:string/tcp_fastopen_failure without required default value.
warn: removing resource com.github.shadowsocks.tv:string/tcp_fastopen_summary without required default value.
warn: removing resource com.github.shadowsocks.tv:string/tcp_fastopen_summary_unsupported without required default value.

> Task :tv:processFreedomReleaseResources
> Task :plugin:extractReleaseAnnotations
> Task :plugin:mergeReleaseGeneratedProguardFiles
> Task :plugin:mergeReleaseConsumerProguardFiles
> Task :plugin:bundleLibRuntimeToJarRelease
> Task :plugin:bundleLibResRelease
> Task :plugin:mergeReleaseJavaResource
> Task :core:kaptGenerateStubsReleaseKotlin
> Task :plugin:syncReleaseLibJars
> Task :plugin:bundleReleaseLocalLintAar
> Task :tv:mergeFreedomReleaseJniLibFolders
> Task :plugin:exportReleaseConsumerProguardFiles
> Task :tv:mergeFreedomReleaseNativeLibs
> Task :tv:checkFreedomReleaseDuplicateClasses

> Task :tv:stripFreedomReleaseDebugSymbols
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Task :plugin:createFullJarRelease
> Task :tv:processFreedomReleaseJavaRes NO-SOURCE

> Task :tv:extractFreedomReleaseNativeSymbolTables
[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir

> Task :tv:mergeFreedomReleaseNativeDebugMetadata NO-SOURCE
> Task :tv:mergeFreedomReleaseShaders
> Task :tv:compileFreedomReleaseShaders NO-SOURCE
> Task :tv:generateFreedomReleaseAssets UP-TO-DATE
> Task :tv:mergeFreedomReleaseAssets
> Task :tv:compressFreedomReleaseAssets
> Task :tv:collectFreedomReleaseDependencies
> Task :tv:sdkFreedomReleaseDependencyData
> Task :tv:writeFreedomReleaseAppMetadata
> Task :tv:writeFreedomReleaseSigningConfigVersions
> Task :tv:mergeFreedomReleaseArtProfile
> Task :core:kaptReleaseKotlin

> Task :core:compileReleaseKotlin
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/Core.kt: (144, 23): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/Core.kt: (145, 27): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (72, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (78, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (82, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (121, 26): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/bg/BaseService.kt: (266, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/bg/BaseService.kt: (343, 34): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/bg/GuardedProcessPool.kt: (82, 21): The value 'true' assigned to 'var running: Boolean defined in com.github.shadowsocks.bg.GuardedProcessPool.Guard.looper' is never used
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/bg/GuardedProcessPool.kt: (87, 17): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/bg/VpnService.kt: (196, 38): Type mismatch: inferred type is String? but String was expected
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/database/PrivateDatabase.kt: (50, 36): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/database/PublicDatabase.kt: (43, 36): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt: (51, 32): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt: (51, 44): This declaration is experimental and its usage should be marked with '@kotlinx.coroutines.ObsoleteCoroutinesApi' or '@OptIn(kotlinx.coroutines.ObsoleteCoroutinesApi::class)'
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt: (55, 25): This declaration is experimental and its usage should be marked with '@kotlinx.coroutines.ObsoleteCoroutinesApi' or '@OptIn(kotlinx.coroutines.ObsoleteCoroutinesApi::class)'
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/net/HttpsTest.kt: (92, 19): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/net/Subnet.kt: (81, 46): Type mismatch: inferred type is String? but String was expected
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/net/Subnet.kt: (81, 71): Unsafe use of a nullable receiver of type String?
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/subscription/SubscriptionService.kt: (111, 36): This declaration is experimental and its usage should be marked with '@kotlinx.coroutines.ExperimentalCoroutinesApi' or '@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)'
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/subscription/SubscriptionService.kt: (114, 21): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/utils/Utils.kt: (86, 64): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
w: /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/java/com/github/shadowsocks/utils/Utils.kt: (88, 9): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.

> Task :core:compileReleaseJavaWithJavac
> Task :core:extractReleaseAnnotations
> Task :core:bundleLibCompileToJarRelease
> Task :core:mergeReleaseGeneratedProguardFiles
> Task :core:mergeReleaseConsumerProguardFiles
> Task :core:bundleLibResRelease
> Task :core:mergeReleaseJavaResource
> Task :tv:kaptGenerateStubsFreedomReleaseKotlin
> Task :tv:kaptFreedomReleaseKotlin

> Task :tv:compileFreedomReleaseKotlin
w: /home/vagrant/build/com.github.shadowsocks.tv/tv/src/main/java/com/github/shadowsocks/tv/MainFragment.kt: (48, 21): 'setTargetFragment(Fragment?, Int): Unit' is deprecated. Deprecated in Java
w: /home/vagrant/build/com.github.shadowsocks.tv/tv/src/main/java/com/github/shadowsocks/tv/MainFragment.kt: (56, 17): 'setTargetFragment(Fragment?, Int): Unit' is deprecated. Deprecated in Java

> Task :tv:compileFreedomReleaseJavaWithJavac
> Task :tv:compileFreedomReleaseSources
> Task :core:syncReleaseLibJars
> Task :core:bundleReleaseLocalLintAar
> Task :tv:mergeFreedomReleaseGeneratedProguardFiles
> Task :core:exportReleaseConsumerProguardFiles
> Task :core:bundleLibRuntimeToJarRelease
> Task :tv:bundleFreedomReleaseClasses
> Task :core:createFullJarRelease
> Task :tv:mergeFreedomReleaseJavaResource

> Task :tv:minifyFreedomReleaseWithR8
WARNING:/home/vagrant/build/com.github.shadowsocks.tv/tv/build/intermediates/merged_java_res/freedomRelease/base.jar: R8: Unexpected reference to missing service class: META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor.
WARNING:Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /home/vagrant/build/com.github.shadowsocks.tv/tv/build/outputs/mapping/freedomRelease/missing_rules.txt.

WARNING:R8: Missing class lombok.Generated (referenced from: org.slf4j.Logger org.xbill.DNS.Compression.log and 2 other contexts)
Missing class org.slf4j.impl.StaticLoggerBinder (referenced from: void org.slf4j.LoggerFactory.bind() and 3 other contexts)
Missing class sun.net.spi.nameservice.NameServiceDescriptor (referenced from: org.xbill.DNS.spi.DNSJavaNameServiceDescriptor)

> Task :tv:lintVitalAnalyzeFreedomRelease

> Task :tv:lintVitalFreedomRelease
No issues found.

> Task :tv:shrinkFreedomReleaseRes
> Task :tv:l8DexDesugarLibFreedomRelease
> Task :tv:compileFreedomReleaseArtProfile
> Task :tv:packageFreedomRelease
> Task :tv:assembleFreedomRelease

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 12m 51s
118 actionable tasks: 118 executed
2022-06-24 23:52:05,622 DEBUG: Popen(['git', 'cat-file', '--batch-check'], cwd=/home/vagrant/build/com.github.shadowsocks.tv, universal_newlines=False, shell=None)
2022-06-24 23:52:05,626 INFO: Successfully built version 5.3.0-nightly of com.github.shadowsocks.tv from 09c2290c1ba07336b11a6b7576886d202e14ac71
2022-06-24 23:52:06,214 DEBUG: AXML contains a RESOURCE MAP
2022-06-24 23:52:06,215 DEBUG: Start of Namespace mapping: prefix 42: 'android' --> uri 116: 'http://schemas.android.com/apk/res/android'
2022-06-24 23:52:06,216 DEBUG: Checking build/com.github.shadowsocks.tv/tv/build/outputs/apk/freedom/release/tv-freedom-release-unsigned.apk
2022-06-24 23:52:06,226 DEBUG: AXML contains a RESOURCE MAP
2022-06-24 23:52:06,226 DEBUG: Start of Namespace mapping: prefix 42: 'android' --> uri 116: 'http://schemas.android.com/apk/res/android'
2022-06-24 23:52:06,249 INFO: success: com.github.shadowsocks.tv
2022-06-24 23:52:06,250 INFO: Finished
2022-06-24 23:52:06,250 INFO: 1 build succeeded