aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore14
-rw-r--r--app/build.gradle65
-rw-r--r--app/lint.xml12
-rw-r--r--app/src/main/AndroidManifest.xml19
-rw-r--r--app/src/main/assets/THIRD_PARTY_NOTICES16
-rw-r--r--app/src/main/assets/scrcpy-server.sha2562
-rw-r--r--app/src/main/assets/scrcpy-server.version2
-rw-r--r--build.gradle10
-rw-r--r--gradle/verification-metadata.xml2113
-rw-r--r--gradle/wrapper/gradle-wrapper.jarbin43504 -> 43705 bytes
-rw-r--r--gradle/wrapper/gradle-wrapper.jar.sha2562
-rw-r--r--gradle/wrapper/gradle-wrapper.properties4
-rwxr-xr-xgradlew10
-rwxr-xr-xscripts/build-apk87
-rwxr-xr-xscripts/build-server34
-rwxr-xr-xscripts/check2
-rwxr-xr-xscripts/check-server12
-rwxr-xr-xscripts/check-server-source27
-rwxr-xr-xscripts/check-wrapper24
-rwxr-xr-xscripts/update-server22
-rw-r--r--settings.gradle2
m---------vendor/scrcpy0
22 files changed, 2392 insertions, 87 deletions
diff --git a/.gitignore b/.gitignore
index b6c7953..f088d1b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,17 +2,15 @@
.tools/
build/
local.properties
-*.iml
-.idea/
-.DS_Store
app/release/
+*.jks
+*.keystore
+*.p12
+*.pfx
# vendored binary, regenerated by scripts/update-server
app/src/main/assets/scrcpy-server.jar
-# capture artefact from ./test record
-output.mp4
-
-# adb keypair lives in app's filesDir at runtime; never check it in
+# ADB identity files are runtime secrets; never check them in.
adbkey
-adbkey.pub
+adbcert
diff --git a/app/build.gradle b/app/build.gradle
index 323f340..2c8ec99 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -5,18 +5,18 @@ plugins {
import java.security.MessageDigest
android {
- namespace 'invalid.lena.scrcpy'
- compileSdk 35
+ namespace = 'invalid.lena.scrcpy'
+ compileSdk 36
// Pin build-tools explicitly so the aapt2/zipalign/d8 toolchain is
// fixed and builds stay reproducible, not whatever AGP defaults to.
- // 35.0.0 is the compileSdk's.
+ // 35.0.0 is AGP 8.13's supported default.
buildToolsVersion '35.0.0'
defaultConfig {
// The published package id. Immutable across releases.
applicationId 'invalid.lena.scrcpy'
minSdk 31
- targetSdk 35
+ targetSdk 36
versionCode 4
versionName '0.4'
}
@@ -26,8 +26,8 @@ android {
// deterministic. This is the single most common reproducible-build
// breaker on AGP.
dependenciesInfo {
- includeInApk false
- includeInBundle false
+ includeInApk = false
+ includeInBundle = false
}
// Release signing pulls credentials from the environment. Set all
@@ -49,10 +49,9 @@ android {
}
}
- // Native ABI policy: release ships arm64-v8a only. Every targeted
- // source device is 64-bit ARM in practice; 32-bit-only devices are
- // not supported. The test rig uses an x86_64 emulator, so debug keeps
- // x86_64 (and arm64) so ./test e2e still works.
+ // Ship one ordinary APK containing both supported 64-bit ABIs. arm64
+ // covers physical devices; x86_64 covers emulators and ChromeOS without
+ // introducing split-APK installation logic.
buildTypes {
debug {
applicationIdSuffix '.debug'
@@ -62,15 +61,32 @@ android {
}
}
release {
+ // x86_64 is here so the emulator can install and RUN the
+ // minified artifact. Without it no tier ever executed the
+ // variant that ships, and an R8 misconfiguration - a keep
+ // rule that is too narrow, a reflective edge R8 could not
+ // see - would first show up on a user's device. It costs a
+ // second ABI in the APK and buys coverage of the only build
+ // that matters.
+ //
+ // This is why the APK is ~7.5 MB while the dex shrank: it
+ // carries two copies of libconscrypt_jni.so and libspake2.so,
+ // stored uncompressed and 16 KiB aligned for Android 15+ page
+ // sizes. Uncompressed native libraries inflate the download
+ // and shrink the installation, because they are mapped from
+ // the APK instead of being extracted. A single-ABI build is
+ // about 3.5 MB; splits would give users that without giving
+ // up the emulator coverage, and are the obvious next step if
+ // download size starts to matter.
ndk {
- abiFilters 'arm64-v8a'
+ abiFilters 'arm64-v8a', 'x86_64'
}
minifyEnabled true
- shrinkResources true
+ shrinkResources = true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro'
if (signingReady) {
- signingConfig signingConfigs.release
+ signingConfig = signingConfigs.release
}
}
}
@@ -86,20 +102,14 @@ android {
// our use case (we only call BC's asn1, crypto, util.encoders):
// - picnic post-quantum lookup tables: ~1.2 MB of .properties
// - cert-path-reviewer i18n messages: ~92 KB, en+de only
- // - kotlin metadata: bleed from spake2-android (Kotlin lib);
- // our code is pure Java and doesn't reflect on .kotlin_builtins
- // - androidx annotation LICENSE.txt: 10 KB blob, no runtime use
// - duplicate META-INF licenses/notices: ordinary AGP cleanup
resources.excludes += [
'META-INF/LICENSE*',
'META-INF/NOTICE*',
'META-INF/versions/9/OSGI-INF/MANIFEST.MF',
- 'META-INF/androidx/**',
- 'META-INF/kotlin-stdlib*',
'org/bouncycastle/pqc/crypto/picnic/**',
'org/bouncycastle/pqc/legacy/picnic/**',
'org/bouncycastle/x509/CertPathReviewerMessages*.properties',
- 'kotlin/**',
]
}
@@ -122,15 +132,8 @@ dependencies {
// we declare it explicitly here rather than patch the vendor tree.
implementation 'org.bouncycastle:bcprov-jdk15to18:1.84'
- // Bundled Conscrypt. libadb-android's TLS pairing exports keying
- // material via Conscrypt. Without a bundled copy it reflects into the
- // platform's hidden com.android.org.conscrypt.Conscrypt, which under
- // targetSdk 35 is invisible to reflection (getMethod throws
- // NoSuchMethodException and pairing fails on real devices). Bundling a
- // standalone Conscrypt flips libadb onto the public
- // org.conscrypt.Conscrypt API, which is not restricted. Ships a native
- // .so (filtered to arm64-v8a in release).
- implementation 'org.conscrypt:conscrypt-android:2.5.2'
+ // Wireless pairing requires the public Conscrypt API and native provider.
+ implementation 'org.conscrypt:conscrypt-android:2.6.1'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.json:json:20240303'
@@ -151,14 +154,16 @@ tasks.register('verifyScrcpyServer') {
}
def expected = expectedServerSum.get()
def version = serverVersion.text.trim()
- if (!(expected ==~ /[0-9a-f]{64}/) || version.isEmpty()) {
+ if (!(expected ==~ /[0-9a-f]{64}/)
+ || !(version ==~ /[0-9]+(\.[0-9]+)*/)) {
throw new GradleException('scrcpy server checksum or version is invalid')
}
def digest = MessageDigest.getInstance('SHA-256')
serverJar.withInputStream { input ->
byte[] buffer = new byte[64 * 1024]
for (int n; (n = input.read(buffer)) >= 0; ) {
- if (n > 0) digest.update(buffer, 0, n)
+ if (n == 0) throw new GradleException('scrcpy server read made no progress')
+ digest.update(buffer, 0, n)
}
}
def actual = digest.digest().encodeHex().toString()
diff --git a/app/lint.xml b/app/lint.xml
new file mode 100644
index 0000000..ab9d0e4
--- /dev/null
+++ b/app/lint.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<lint>
+ <!-- AAPT requires adaptive icons to remain version-qualified. -->
+ <issue id="ObsoleteSdkInt">
+ <ignore regexp="mipmap-anydpi-v26"/>
+ </issue>
+ <!-- AGP 8.13's tested wrapper is Gradle 8.13. Do not chase an
+ unvalidated wrapper merely because a newer Gradle exists. -->
+ <issue id="AndroidGradlePluginVersion">
+ <ignore regexp="gradle-wrapper.properties"/>
+ </issue>
+</lint>
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 91e3725..7e8e599 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,11 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
+ <!-- spake2-android has no targetSdk in its manifest. The merger adds
+ obsolete implicit permissions after evaluating these removals, so
+ it misleadingly warns that no declaration is present. The rules are
+ required: scripts/build-apk fails if any permission gets through. -->
+ <uses-permission
+ android:name="android.permission.WRITE_EXTERNAL_STORAGE"
+ tools:ignore="ScopedStorage"
+ tools:node="remove"/>
+ <uses-permission
+ android:name="android.permission.READ_EXTERNAL_STORAGE"
+ tools:ignore="ScopedStorage"
+ tools:node="remove"/>
+ <uses-permission
+ android:name="android.permission.READ_PHONE_STATE"
+ tools:node="remove"/>
+
<application
android:name=".App"
android:label="@string/app_name"
diff --git a/app/src/main/assets/THIRD_PARTY_NOTICES b/app/src/main/assets/THIRD_PARTY_NOTICES
index 36cc025..03a0bd1 100644
--- a/app/src/main/assets/THIRD_PARTY_NOTICES
+++ b/app/src/main/assets/THIRD_PARTY_NOTICES
@@ -34,25 +34,19 @@ Copyright 2000-2023 The Legion of the Bouncy Castle Inc.
Licensed under the MIT license.
Source: https://github.com/bcgit/bc-java/tree/r1rv84
-Conscrypt Android 2.5.2
+Conscrypt Android 2.6.1
-----------------------
Copyright 2016 The Android Open Source Project.
Licensed under Apache-2.0. Contains modified portions of Netty and Apache
Harmony under Apache-2.0.
-Source: https://github.com/google/conscrypt/tree/2.5.2
-Notice: https://github.com/google/conscrypt/blob/2.5.2/NOTICE
+Source: https://github.com/google/conscrypt/tree/2.6.1
+Notice: https://github.com/google/conscrypt/blob/2.6.1/NOTICE
-AndroidX Annotation 1.9.1
--------------------------
-Copyright The Android Open Source Project.
-Licensed under Apache-2.0.
-Source: https://android.googlesource.com/platform/frameworks/support/
-
-scrcpy server 4.0
+scrcpy server 4.1
-----------------
Copyright 2018 Genymobile and 2018-2026 Romain Vimont.
Licensed under Apache-2.0.
-Source: https://github.com/Genymobile/scrcpy/tree/v4.0
+Source: https://github.com/Genymobile/scrcpy/tree/v4.1
The Apache-2.0 terms used by this application and several components are in
the top-level LICENSE file in the source distribution:
diff --git a/app/src/main/assets/scrcpy-server.sha256 b/app/src/main/assets/scrcpy-server.sha256
index 376a42f..58a04f6 100644
--- a/app/src/main/assets/scrcpy-server.sha256
+++ b/app/src/main/assets/scrcpy-server.sha256
@@ -1 +1 @@
-84924bd564a1eb6089c872c7521f968058977f91f5ff02514a8c74aff3210f3a
+deacb991ed2509715160ffdc7907e47b4160eb30d1566217e9047fd5b8850cae
diff --git a/app/src/main/assets/scrcpy-server.version b/app/src/main/assets/scrcpy-server.version
index 5186d07..7d5c902 100644
--- a/app/src/main/assets/scrcpy-server.version
+++ b/app/src/main/assets/scrcpy-server.version
@@ -1 +1 @@
-4.0
+4.1
diff --git a/build.gradle b/build.gradle
index 9da7691..0265eec 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,4 +1,10 @@
plugins {
- id 'com.android.application' version '8.7.3' apply false
- id 'com.android.library' version '8.7.3' apply false
+ id 'com.android.application' version '8.13.2' apply false
+ id 'com.android.library' version '8.13.2' apply false
+}
+
+subprojects {
+ tasks.withType(JavaCompile).configureEach {
+ options.compilerArgs += ['-Xlint:deprecation', '-Xlint:unchecked']
+ }
}
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
new file mode 100644
index 0000000..a4022a3
--- /dev/null
+++ b/gradle/verification-metadata.xml
@@ -0,0 +1,2113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<verification-metadata xmlns="https://schema.gradle.org/dependency-verification" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://schema.gradle.org/dependency-verification https://schema.gradle.org/dependency-verification/dependency-verification-1.3.xsd">
+ <configuration>
+ <verify-metadata>true</verify-metadata>
+ <verify-signatures>false</verify-signatures>
+ </configuration>
+ <components>
+ <component group="androidx.annotation" name="annotation" version="1.9.1">
+ <artifact name="annotation-1.9.1.module">
+ <sha256 value="f204b05b728a97561718bc716242e47c629c0085a80ee74fca53d4d638bcbe3f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="androidx.annotation" name="annotation-jvm" version="1.9.1">
+ <artifact name="annotation-jvm-1.9.1.jar">
+ <sha256 value="1e343917ebf27ba96fe4dc52b1cad7fd32b738fbc6355bb6cd5b3b305d7212d0" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="annotation-jvm-1.9.1.module">
+ <sha256 value="03fb659177c8618e47425925c11bc91f384703ea26c265be9b25cd79292b511c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="androidx.databinding" name="databinding-common" version="8.13.2">
+ <artifact name="databinding-common-8.13.2.jar">
+ <sha256 value="66cab82639dac0f6c2433464c093b074d608c4bb887ec38a9b8bc4ac98126732" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="databinding-common-8.13.2.pom">
+ <sha256 value="1d1b2c91e89310786dee770e9126f2fa20ed12e3e617e439ca289ff5df3913b1" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="androidx.databinding" name="databinding-compiler-common" version="8.13.2">
+ <artifact name="databinding-compiler-common-8.13.2.jar">
+ <sha256 value="a2c3fff0c39ac72c4c21c415017066c263efe170d8aeb9d339a3eca7c0d79f1e" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="databinding-compiler-common-8.13.2.pom">
+ <sha256 value="6fe77285fff9caa61626a3fc6ff6352548f8190a2c7434be921ecfef46bea3eb" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android" name="signflinger" version="8.13.2">
+ <artifact name="signflinger-8.13.2.jar">
+ <sha256 value="c1dca2c683634ee1a294298f9c7179578af6a86e080bdc40f961915bc5c8142f" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="signflinger-8.13.2.pom">
+ <sha256 value="09f69f40d4e00d52072eb0dd07ac676ae82313279a608530d38dd14800f55fc4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android" name="zipflinger" version="8.13.2">
+ <artifact name="zipflinger-8.13.2.jar">
+ <sha256 value="07060069c35e469d7c343abc15f1d6362bc1356b81bf462539db88a53ed653f1" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="zipflinger-8.13.2.pom">
+ <sha256 value="e2eed37782da4d8c799d4c4b737c35ad88d3912f5136cfdfe2c014ccd40b350c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.application" name="com.android.application.gradle.plugin" version="8.13.2">
+ <artifact name="com.android.application.gradle.plugin-8.13.2.pom">
+ <sha256 value="d4590cc0488efba782fb37d13e52812932f7efff10222ed2a96b7520bfdaa2af" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.databinding" name="baseLibrary" version="8.13.2">
+ <artifact name="baseLibrary-8.13.2.jar">
+ <sha256 value="794113709dab21b06c262b3795e73cb708fbacae61715f34361e1af6237a1870" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="baseLibrary-8.13.2.pom">
+ <sha256 value="dff7770f15cce85e1baa862e0947a1f6e6eec4d64970bbb3ecc7af0dc14a6d1c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.library" name="com.android.library.gradle.plugin" version="8.13.2">
+ <artifact name="com.android.library.gradle.plugin-8.13.2.pom">
+ <sha256 value="c58553fcc90ee3579ceeffcae961f4ac4722b24854921afaac9b7a668986ebbd" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools" name="annotations" version="31.13.2">
+ <artifact name="annotations-31.13.2.jar">
+ <sha256 value="3b4bb9620c17d19e5bd91ac1988080553573b4c3b739fdd92416f42f2daf3e78" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="annotations-31.13.2.pom">
+ <sha256 value="eb73f215814a97af217ba71a6c6859fb1c7e57b13c5d6ccd9959de2c97424755" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools" name="common" version="31.13.2">
+ <artifact name="common-31.13.2.jar">
+ <sha256 value="d4ebe1711de0cf509c4d562245624ba21ab147944bcdde6351bfb6e8daccf826" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="common-31.13.2.pom">
+ <sha256 value="2613d76694fd4a45bbc68b165c14537d5b5469dbea6daa77d9c32e8f85421473" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools" name="dvlib" version="31.13.2">
+ <artifact name="dvlib-31.13.2.jar">
+ <sha256 value="e3cf3fdc947788dee8d5baa76cb72a66571174bc4741edf0e3bab97a7ca90e1b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="dvlib-31.13.2.pom">
+ <sha256 value="1caaab9022160322cb3107f3fe9e15b815ebd37f7568bc64952b590a2ddce706" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools" name="play-sdk-proto" version="31.13.2">
+ <artifact name="play-sdk-proto-31.13.2.jar">
+ <sha256 value="c6fc15a5c203064cfd2c8a176fdeac72ae0a2d743ec47a2e66a0238d8d870b6b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="play-sdk-proto-31.13.2.pom">
+ <sha256 value="6e345e9ecc22ad3ff37ec679dd0a2f45cdcb7d6fe6aec3247b002c89b36a5461" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools" name="repository" version="31.13.2">
+ <artifact name="repository-31.13.2.jar">
+ <sha256 value="e9509b30d088e899948f8cb0d73293c1efd2e1f121fccbbe25d533b648b93fa1" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="repository-31.13.2.pom">
+ <sha256 value="efee8a580eac7478c8aef9d30bce5a432753d26d940a5d953ff482ce413c663a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools" name="sdk-common" version="31.13.2">
+ <artifact name="sdk-common-31.13.2.jar">
+ <sha256 value="8cfdf99d6f17689e7dd3bcf1834d734f6dd1c64d8c43904632c65d5469565934" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="sdk-common-31.13.2.pom">
+ <sha256 value="7b33d73dd42847b04f59a51eaab71b3452c0d699f7c69659152b83863cc90cc4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools" name="sdklib" version="31.13.2">
+ <artifact name="sdklib-31.13.2.jar">
+ <sha256 value="def9b0e7f44e54add385cac1715483724f827f166511ebc0c10319742aa80865" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="sdklib-31.13.2.pom">
+ <sha256 value="fec69846b670ab3dbaef2067ba5f9829aefb80477c9f7680f90f4a6be3695a58" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.analytics-library" name="crash" version="31.13.2">
+ <artifact name="crash-31.13.2.jar">
+ <sha256 value="cca97ac29a1329bd310a3e832b6e57f46227e501aa529c00a63df217c5d7df41" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="crash-31.13.2.pom">
+ <sha256 value="f91761f271199b088e85b6232e059833e114f56a13f11a55795c76feb9636693" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.analytics-library" name="protos" version="31.13.2">
+ <artifact name="protos-31.13.2.jar">
+ <sha256 value="b2ded20a897fba9649efeb18ba2fc062ee39e500d4eb712045cb0e34b43b5efb" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="protos-31.13.2.pom">
+ <sha256 value="87e56dc6bc1e8b78760020508aa327d784ae6ce9aade6c1e9c7a4f3f26525ce0" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.analytics-library" name="shared" version="31.13.2">
+ <artifact name="shared-31.13.2.jar">
+ <sha256 value="75435816f202b7a3c84d9caf312a895625a244991f8fc52d0446239e3ae29a9c" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="shared-31.13.2.pom">
+ <sha256 value="8a8b198d97d2ea7a01a6ae53c724707d66ba37a0404cb982349cece45f550c78" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.analytics-library" name="tracker" version="31.13.2">
+ <artifact name="tracker-31.13.2.jar">
+ <sha256 value="1b66514bf29152422ee8a19b98e0200d92eb0a3d28048eb4857564e9a1c7b85b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="tracker-31.13.2.pom">
+ <sha256 value="7f27c95dcaaefd92dceecb37e61b1a9b70141ecee86a210d9c57f46cae4f91c9" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="aapt2" version="8.13.2-14304508">
+ <artifact name="aapt2-8.13.2-14304508-linux.jar">
+ <sha256 value="839609d6d776d6dd60a02aa577d97193ce3e650cf1deaabf062321e23bbd6bf6" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="aapt2-8.13.2-14304508.pom">
+ <sha256 value="7e085634f503d42a4f3ea14488c25d4a573914db23c64a5a05a0c5c186c93112" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="aapt2-proto" version="8.13.2-14304508">
+ <artifact name="aapt2-proto-8.13.2-14304508.jar">
+ <sha256 value="a6cda82d508ec3b325a9e37f78f9fa84556ff340cf43bb23c627b0f39e746f0e" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="aapt2-proto-8.13.2-14304508.module">
+ <sha256 value="7d5b7285f476c82008f0d39f506b0b8c53f1b026bd624d7adc688216be8ea5be" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="aaptcompiler" version="8.13.2">
+ <artifact name="aaptcompiler-8.13.2.jar">
+ <sha256 value="f6f6706d3b7a261e242820da5c855123d3c23738159ca3726e0c34e482b80770" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="aaptcompiler-8.13.2.module">
+ <sha256 value="0e3ba6b43ad98fa69131de1d8b6c6a7541b3af71443dcb5d52a2cffc2558ee6b" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="apksig" version="8.13.2">
+ <artifact name="apksig-8.13.2.jar">
+ <sha256 value="c070ed1394629d74641aa0906f60b2ffa1ee77e6366a1f93437f59717b1aeb89" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="apksig-8.13.2.pom">
+ <sha256 value="223ded8268e7f0ee9df0109d8049ced61474b5ebd848c2d3a088932a2c5cc823" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="apkzlib" version="8.13.2">
+ <artifact name="apkzlib-8.13.2.jar">
+ <sha256 value="29091c9457252f997ddfeafb33dd65a373ad45840128f945832d8eafd9118561" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="apkzlib-8.13.2.pom">
+ <sha256 value="b3348da025b08b533f2e6e39138692ea0b1a89955ddc3e1b8db1796a553146d4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="builder" version="8.13.2">
+ <artifact name="builder-8.13.2.jar">
+ <sha256 value="7d393f8553120c7d7a869cb33c4279aad9485986773f63af97af08ea2e1ff37a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="builder-8.13.2.module">
+ <sha256 value="4a8a108de5f04142a6757861a0a57a298b936b7b7f7f9c5b91e5caa9a7efda90" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="builder-model" version="8.13.2">
+ <artifact name="builder-model-8.13.2.jar">
+ <sha256 value="ae5e95515ab348d34a35be83ed315c5fb7e8c0667e186f4e156c65dfaa2615fe" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="builder-model-8.13.2.module">
+ <sha256 value="5ae11d7a40857e1a4b0bc6a7f4218255c96169b7011535f9a30b77b5f6e327a1" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="builder-test-api" version="8.13.2">
+ <artifact name="builder-test-api-8.13.2.jar">
+ <sha256 value="3cfed0baec2e7d0e64566f6808a00ef5e051ad76fc4fba9d464d11a3c2f986a9" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="builder-test-api-8.13.2.module">
+ <sha256 value="4f72f3a9fd3e9f516c36cefac6978dcc040496210b8cfad7d2954c83bba0e990" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="bundletool" version="1.18.1">
+ <artifact name="bundletool-1.18.1.jar">
+ <sha256 value="a73341a7945abcb0e6b8971c7b1b2801bd765006447ca0d2437a4260d572ceac" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="bundletool-1.18.1.pom">
+ <sha256 value="5c4df7b2e31f17f20e4b8dbd62a2b7865a09a49a1fd2931a359fd394ecb9b5a5" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="gradle" version="8.13.2">
+ <artifact name="gradle-8.13.2.jar">
+ <sha256 value="e494f7ce75ca6c1abff301d4a70b18fdd3d6af855875f4f85082bb7608f041de" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="gradle-8.13.2.module">
+ <sha256 value="0aac0bee1a4fc65cd69a6788548a7e21d246250c858017e11e3bf23163cb75a7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="gradle-api" version="8.13.2">
+ <artifact name="gradle-api-8.13.2.jar">
+ <sha256 value="a8dcdc6f1338f7055f6b1bc265317e14d65833e6c7f72b2102c5568e1df4d792" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="gradle-api-8.13.2.module">
+ <sha256 value="1be00181670666873cd0128e9dec6ee99cd2ae207bab909ecc11ff0cf729bc5d" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="gradle-common-api" version="8.13.2">
+ <artifact name="gradle-common-api-8.13.2.jar">
+ <sha256 value="fcde805fcd5739aed607a9cdc325316f422fa05a46e140a291d2f24eca3a59fe" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="gradle-common-api-8.13.2.module">
+ <sha256 value="9e6edcd959f6ed87a2273b85de0f4efac26e7cdcbf4bd6a4a3f4e05c8e7e7c1c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="gradle-settings-api" version="8.13.2">
+ <artifact name="gradle-settings-api-8.13.2.jar">
+ <sha256 value="370438bcf7782d8c5b407370365b047bf063f99a7745e1f5f1853183398d07a6" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="gradle-settings-api-8.13.2.module">
+ <sha256 value="e5cac798c13234eea43adb084c5c81c20ad1c36cc4b5b57f3922d91f4ec024d6" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="manifest-merger" version="31.13.2">
+ <artifact name="manifest-merger-31.13.2.jar">
+ <sha256 value="40d25f5940c2e50bf7e18e325f7fbb9c86cf45db5a85d1cef8ef985404227a1f" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="manifest-merger-31.13.2.module">
+ <sha256 value="4bd9d47df07b78174a72faa92423935af29d17c9896a84b658b921f6f1a92348" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build" name="transform-api" version="2.0.0-deprecated-use-gradle-api">
+ <artifact name="transform-api-2.0.0-deprecated-use-gradle-api.jar">
+ <sha256 value="4de4a3d05e1c534c2db9e4588bf34082bb2bd232d8abb9727c430290ce225740" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="transform-api-2.0.0-deprecated-use-gradle-api.pom">
+ <sha256 value="7c62f3856e8abca1d79257925f26c12668693f5d95904056bbac88605cfd8575" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build.jetifier" name="jetifier-core" version="1.0.0-beta10">
+ <artifact name="jetifier-core-1.0.0-beta10.jar">
+ <sha256 value="26abb4a13927d9062169c504c9e94fe80e9ae3a4f7b5ab8875ab007536a91f5e" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jetifier-core-1.0.0-beta10.module">
+ <sha256 value="f0917589a42d276163f10040ab5842e91883dcbdb1d48bfd1f1fcaa72c1ca7b7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.build.jetifier" name="jetifier-processor" version="1.0.0-beta10">
+ <artifact name="jetifier-processor-1.0.0-beta10.jar">
+ <sha256 value="c5067a7b928237a1271a5e9cb5710e9f80b4973293945bc51e3a4c864ea4bfed" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jetifier-processor-1.0.0-beta10.module">
+ <sha256 value="36c25576b19993df360170528cc62b7246c37776d6158154a67cdf8fc2d58e13" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.ddms" name="ddmlib" version="31.13.2">
+ <artifact name="ddmlib-31.13.2.jar">
+ <sha256 value="839957f961100713ea0eed628a8684cc39aa479631c36249793e6df7e0cd63d8" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="ddmlib-31.13.2.pom">
+ <sha256 value="9a884b3a0ced5f197ed35d5ff28dd440824aeb6a8c421fc68276eb81922ad0c0" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.emulator" name="proto" version="31.13.2">
+ <artifact name="proto-31.13.2.jar">
+ <sha256 value="b77f81cc0751d79393ec4b2eb046f910d21abcd7608b5b0f5a1efea1b3243b48" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="proto-31.13.2.pom">
+ <sha256 value="34f059227ad538ebc8ed19234490ced58a6e294845a72cbab114eb57a311356a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.external.com-intellij" name="intellij-core" version="31.13.2">
+ <artifact name="intellij-core-31.13.2.jar">
+ <sha256 value="9a6faa6061d0f3d54a64decb61944c1b2c6927f8d325cd298c82c2a8d867ee68" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="intellij-core-31.13.2.pom">
+ <sha256 value="21f7df870290113ee81b1c5a373c9cc99a3c252a3fbc76737c08532e5e910e51" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.external.com-intellij" name="kotlin-compiler" version="31.13.2">
+ <artifact name="kotlin-compiler-31.13.2.jar">
+ <sha256 value="552dfaffe295d08504870816c27fc09007e1231fb9b14c1ff9bbf861f9b35990" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-compiler-31.13.2.pom">
+ <sha256 value="2b2294ed4c07646b7ca29a362e04e5fbe489c5b3cf1d2bc4620a5c317666435f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.external.org-jetbrains" name="uast" version="31.13.2">
+ <artifact name="uast-31.13.2.jar">
+ <sha256 value="78f18ac2b2509fb6cb19058e8fc9585c361b97990dd7d5db0c2a94744dfb0a96" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="uast-31.13.2.pom">
+ <sha256 value="5b5c6c6b71f9815ee531560946bf579b7b9fa806aa9dfbf1b567ed6aa598ee18" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.layoutlib" name="layoutlib-api" version="31.13.2">
+ <artifact name="layoutlib-api-31.13.2.jar">
+ <sha256 value="d06bc650247632a4a4e6596b87312019f45e900267c5476c47a5bfa6e3fd3132" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="layoutlib-api-31.13.2.pom">
+ <sha256 value="b6d13597b292e5235c11ede0047fdce708ed9f0ade6b039c5f02770ba8d61053" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.lint" name="lint" version="31.13.2">
+ <artifact name="lint-31.13.2.jar">
+ <sha256 value="7f875a980ee23916439d368d073cfbc2ee4e4d99ffe1b3e13da794fef347f29a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="lint-31.13.2.pom">
+ <sha256 value="c8a5bb4a6ffbb17c07ff72e52c446e0271fd2b3e16c08be37207fd77008ae93e" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.lint" name="lint-api" version="31.13.2">
+ <artifact name="lint-api-31.13.2.jar">
+ <sha256 value="8f770657dba33f305e583c62953a4f174c75a7b1cd2da7d31134be36a96ae2ac" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="lint-api-31.13.2.pom">
+ <sha256 value="664d7824766a943679cc031f516bd94843a8ba99cfd8ed0c33e68e8fbcc75407" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.lint" name="lint-checks" version="31.13.2">
+ <artifact name="lint-checks-31.13.2.jar">
+ <sha256 value="3b64f395ae17fcea104882b00a4acdc7dc691f5daca5dff2bdde89fa052bb199" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="lint-checks-31.13.2.pom">
+ <sha256 value="6298a80b18b08ff03b3c939424df874c68f449c1591cfa69680e93e3e516e6a2" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.lint" name="lint-gradle" version="31.13.2">
+ <artifact name="lint-gradle-31.13.2.jar">
+ <sha256 value="a42b6a41c436d90ca31a13d67afba1157b157efc892a7496f67432bf8a831cbd" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="lint-gradle-31.13.2.pom">
+ <sha256 value="cbd02ebf01bc37b150ad7ace3f2d533c8ebb0b490e8584e09c9bc4152ad85e66" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.lint" name="lint-model" version="31.13.2">
+ <artifact name="lint-model-31.13.2.jar">
+ <sha256 value="9ee55d8fd002736ed95ee97fb05f4df7ae01f4f976f738fbf37ecab795e59319" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="lint-model-31.13.2.pom">
+ <sha256 value="9261641f5e3b5b7ce4cdcd3b75d74679bcb0acc6fae5cc8087df501893959b81" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.lint" name="lint-typedef-remover" version="31.13.2">
+ <artifact name="lint-typedef-remover-31.13.2.jar">
+ <sha256 value="4a3ba3babfd79e6fc67bcef647fb4ecfeaf59b481b108f7c2eba4d1c5c6dea8e" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="lint-typedef-remover-31.13.2.pom">
+ <sha256 value="55216e820979bb7c9503f7ea3c10298f7c418ff3bc72fb29fafed541d9f8e421" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-device-provider-ddmlib" version="31.13.2">
+ <artifact name="android-device-provider-ddmlib-31.13.2.jar">
+ <sha256 value="b16ebfef5b63b03b803ead0a5e194ee34e0dd361c1e191557d998f01534744ff" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-device-provider-ddmlib-31.13.2.module">
+ <sha256 value="15745704fb951a3629b1a2635ac6e21085b0f6e6325966d47725e50c3a5fac5b" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-device-provider-ddmlib-proto" version="31.13.2">
+ <artifact name="android-device-provider-ddmlib-proto-31.13.2.jar">
+ <sha256 value="047aecdd66e106137f77a52c442f1b83db7d6e8496899800251f206c7f39de65" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-device-provider-ddmlib-proto-31.13.2.pom">
+ <sha256 value="41162373faa669cfd74101077ec29cf285222e931ba889c53e60ff60ecf6631e" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-device-provider-profile" version="31.13.2">
+ <artifact name="android-device-provider-profile-31.13.2.jar">
+ <sha256 value="9560c25859c9c15c77144cbb58370bad394882ecc3169fd5e589b7d4e52e866f" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-device-provider-profile-31.13.2.module">
+ <sha256 value="7cce606becb5853221ca900b7540d0e6cbb8c1ed4c2adf0b06ee39c36d0e4de9" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-device-provider-profile-proto" version="31.13.2">
+ <artifact name="android-device-provider-profile-proto-31.13.2.jar">
+ <sha256 value="3e7b098f6e3ecae31b6f7909c343b4ec09aa18d8a89f41bf92077ba4b056f453" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-device-provider-profile-proto-31.13.2.pom">
+ <sha256 value="d55574b5dda6b08b76ab10a926495934c7ddc10f617d336e779b603b555e9ba2" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-additional-test-output" version="31.13.2">
+ <artifact name="android-test-plugin-host-additional-test-output-31.13.2.jar">
+ <sha256 value="faae42a16cf76d7529b59b1b9a4dbf9cb1bedca58118eba824fddb8312dc7655" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-host-additional-test-output-31.13.2.module">
+ <sha256 value="b0a3c5b358d6b6267448eb6abfeaf6ad025ab1f07cb3b650af52fd702badfc05" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-additional-test-output-proto" version="31.13.2">
+ <artifact name="android-test-plugin-host-additional-test-output-proto-31.13.2.jar">
+ <sha256 value="6ba7e6ac2208d74c1bb5f1d1464abafc6a45d8710b20455a2dc02adf8726bc83" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-host-additional-test-output-proto-31.13.2.pom">
+ <sha256 value="af2a8bbce9a376c0def4aaf287a19dce85202f127b523242ffe1f8041e14df28" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-apk-installer" version="31.13.2">
+ <artifact name="android-test-plugin-host-apk-installer-31.13.2.jar">
+ <sha256 value="949c6f65122129d3ecd59b0899860e8e24e9682cec1c008d1f11a5cc93366f64" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-host-apk-installer-31.13.2.module">
+ <sha256 value="ae4945c1102dc8f53075f61eba8a0f666c7437ffebe2b9fb1671968cc4547313" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-apk-installer-proto" version="31.13.2">
+ <artifact name="android-test-plugin-host-apk-installer-proto-31.13.2.jar">
+ <sha256 value="4f2b610542e91a35a396b04368a784036e42b8787021460550b9a3495bb8245b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-host-apk-installer-proto-31.13.2.pom">
+ <sha256 value="a8bd59c4d3ba1e8c1ee04266f6af2a46d2a89f209e5e596b163759c1bd480f2a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-coverage" version="31.13.2">
+ <artifact name="android-test-plugin-host-coverage-31.13.2.jar">
+ <sha256 value="4993a95049e52c4d3147e9c4dfc696cc5a76af8303a4206bb60c2bfabc563ae9" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-host-coverage-31.13.2.module">
+ <sha256 value="daf1f2792529dc44cec6897f97fc845dbaa63fec2d6939c97e27c2feea4db3f6" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-coverage-proto" version="31.13.2">
+ <artifact name="android-test-plugin-host-coverage-proto-31.13.2.jar">
+ <sha256 value="fa86719a3dc5de465f7e0c023184414c27f8fd53a34fd557289c0bf6df340244" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-host-coverage-proto-31.13.2.pom">
+ <sha256 value="e56dce1b6700e9fd4a1b9b4f5cadaad0864d3982ee64933922b5d4e0c08aa745" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-device-info" version="31.13.2">
+ <artifact name="android-test-plugin-host-device-info-31.13.2.jar">
+ <sha256 value="a53b9f764d80bed29e0f2e0ee62576dc09b87386608bb62ef1453d032f976968" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-host-device-info-31.13.2.module">
+ <sha256 value="6c1222b83fe4d4cc584f6f4419f6a4e95723dcaa453c7a32469ff24c0809e2a0" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-device-info-proto" version="31.13.2">
+ <artifact name="android-test-plugin-host-device-info-proto-31.13.2.jar">
+ <sha256 value="9683ac7648a7a41be9a1349f6981592944f627164898c3c8925a0beede8bb8bb" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-host-device-info-proto-31.13.2.pom">
+ <sha256 value="2ad0b9a2876ff48d50b0f4083d07e3dbfd43a7c1a7d6c8d170a9f4faec93951e" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-emulator-control" version="31.13.2">
+ <artifact name="android-test-plugin-host-emulator-control-31.13.2.jar">
+ <sha256 value="73022c2a2779eeacfbfce67dda7cfbb21e3b3cf5610a54e35fc30d8fcc860930" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-host-emulator-control-31.13.2.module">
+ <sha256 value="01961125568e18cb312446f0e1c4edfd3669fc8a90c459ff505729efe2e073ce" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-emulator-control-proto" version="31.13.2">
+ <artifact name="android-test-plugin-host-emulator-control-proto-31.13.2.jar">
+ <sha256 value="a4f34aae0f9ffa026dbf7151436dd7ae53becb72622b40f2c479cac8943d9319" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-host-emulator-control-proto-31.13.2.pom">
+ <sha256 value="8f14e76b48e46ba5264a8f8fa4d98f8085ab654c4f175a7e04f40fac6019d794" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-logcat" version="31.13.2">
+ <artifact name="android-test-plugin-host-logcat-31.13.2.jar">
+ <sha256 value="f559b7c544e29ac3547339805c5e98d938e2a2764691d74ebabeb36e1fca0fba" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-host-logcat-31.13.2.module">
+ <sha256 value="df3d289ffba6ff28fa8875462477d911f009cc094c7ca55973b96b31da0269e9" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-host-logcat-proto" version="31.13.2">
+ <artifact name="android-test-plugin-host-logcat-proto-31.13.2.jar">
+ <sha256 value="c1f6ebbacdad559b6efe4eaa29561552b33156395f069cd9703fda09c462dea6" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-host-logcat-proto-31.13.2.pom">
+ <sha256 value="ff30d1b49188298cf926a30a914db56569be02e445aa6d0356520750ac98c5a8" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-result-listener-gradle" version="31.13.2">
+ <artifact name="android-test-plugin-result-listener-gradle-31.13.2.jar">
+ <sha256 value="f5ed39ecda77684730b2616d112d69f92f509e3d6c38828abc6a863ef77fe0e5" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-result-listener-gradle-31.13.2.module">
+ <sha256 value="689acf1e56994bfe74015218bd89595d57fec14157c5ce66a1c75c7e011f889f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="android-test-plugin-result-listener-gradle-proto" version="31.13.2">
+ <artifact name="android-test-plugin-result-listener-gradle-proto-31.13.2.jar">
+ <sha256 value="d429b9312dffa0503381d1ee1b18a999bd901e7456612b2fb48c6a5d5a2caf88" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-result-listener-gradle-proto-31.13.2.pom">
+ <sha256 value="35447271757de4d1668eb1dcb4da1b876a4b944407624cbdebad5b1edb4448fa" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.android.tools.utp" name="utp-common" version="31.13.2">
+ <artifact name="utp-common-31.13.2.jar">
+ <sha256 value="cde678a64b13041cdd2cc9dad1685990a1d090fb04ff5da2261ff75a83598106" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="utp-common-31.13.2.pom">
+ <sha256 value="b2ef289b20cbdc75307e741cf115da155459e1a58b5d0c2e0a1fda3cad13b671" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.github.MuntashirAkon.spake2-java" name="spake2-android" version="2.2.1">
+ <artifact name="spake2-android-2.2.1.aar">
+ <sha256 value="8798fb6c04b5d53a6307ed9481e9afe563227abd4e8b9e917c8514fa850071bb" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="spake2-android-2.2.1.module">
+ <sha256 value="92852fe3332f072c5440a20e0e2f85bf20d83b904bd86ccc4071707c840901d7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.android" name="annotations" version="4.1.1.4">
+ <artifact name="annotations-4.1.1.4.jar">
+ <sha256 value="ba734e1e84c09d615af6a09d33034b4f0442f8772dec120efb376d86a565ae15" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="annotations-4.1.1.4.pom">
+ <sha256 value="e4bb54753c36a27a0e5d70154a5034fedd8feac4282295034bfd483d6c7aae78" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.api.grpc" name="proto-google-common-protos" version="2.17.0">
+ <artifact name="proto-google-common-protos-2.17.0.jar">
+ <sha256 value="4ef1fe0c327fc1521d1d753b0b1c4a875a54bd14ebded3afff0ca395320b6ea9" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="proto-google-common-protos-2.17.0.pom">
+ <sha256 value="3f028153a585c59f558b3e43a7c9809a601a8bb5e91061d6c658fffa24cb8e26" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.api.grpc" name="proto-google-common-protos" version="2.48.0">
+ <artifact name="proto-google-common-protos-2.48.0.jar">
+ <sha256 value="43ec7807459aaa4012e838a1be4ef2d590cf233305da60af5b54f08ec8cf2302" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="proto-google-common-protos-2.48.0.pom">
+ <sha256 value="45eb927b22685fc11bfab69ce6ad3b439f72d816a3a7de46bd23f4ed19bf89c3" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.auto" name="auto-common" version="1.2.1">
+ <artifact name="auto-common-1.2.1.jar">
+ <sha256 value="f43f29fe2a6ebaf04b2598cdeec32a4e346d49a9404e990f5fc19c19f3a28d0e" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="auto-common-1.2.1.pom">
+ <sha256 value="13b4b50062949f8b1343927c581536d3bb051b8afea509aa6f902f4de28bc1b2" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.auto" name="auto-parent" version="6">
+ <artifact name="auto-parent-6.pom">
+ <sha256 value="05f740c6648165db00cf618dd56c200c4725e358e6d54f5853e0bec15734ea0a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.auto.service" name="auto-service" version="1.1.1">
+ <artifact name="auto-service-1.1.1.jar">
+ <sha256 value="1f48f451503e623daba7d9ed368cca0f81e1e3815653a4560113e12c0129ebd5" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="auto-service-1.1.1.pom">
+ <sha256 value="0c53c2f87949b3be8f1c8c67bb76c08ed4f4beb8dbaa475c32ba593d46176317" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.auto.service" name="auto-service-aggregator" version="1.1.1">
+ <artifact name="auto-service-aggregator-1.1.1.pom">
+ <sha256 value="e2dc3e263a5db0cc8172fb2eb9bcd232acecfdc96e817103eab3c8d9f1900c6a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.auto.service" name="auto-service-annotations" version="1.1.1">
+ <artifact name="auto-service-annotations-1.1.1.jar">
+ <sha256 value="16a76dd00a2650568447f5d6e3a9e2c809d9a42367d56b45215cfb89731f4d24" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="auto-service-annotations-1.1.1.pom">
+ <sha256 value="1659fd0a25cea9fa9abfb18deb9d7b180cce3aceab16ff9e625461567e44a2df" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.auto.value" name="auto-value-annotations" version="1.6.2">
+ <artifact name="auto-value-annotations-1.6.2.jar">
+ <sha256 value="b48b04ddba40e8ac33bf036f06fc43995fc5084bd94bdaace807ce27d3bea3fb" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="auto-value-annotations-1.6.2.pom">
+ <sha256 value="1c76cd462fc96e7aa96dc70ce82f0d54063d6df16db35c9c7d9cc0d1a99d3fff" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.auto.value" name="auto-value-parent" version="1.6.2">
+ <artifact name="auto-value-parent-1.6.2.pom">
+ <sha256 value="27b640c82179f5cff62009c0b72033d9bc60f60e9902a66802274b7fe37fc81c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.code.findbugs" name="jsr305" version="3.0.2">
+ <artifact name="jsr305-3.0.2.jar">
+ <sha256 value="766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jsr305-3.0.2.pom">
+ <sha256 value="19889dbdf1b254b2601a5ee645b8147a974644882297684c798afe5d63d78dfe" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.code.gson" name="gson" version="2.10.1">
+ <artifact name="gson-2.10.1.jar">
+ <sha256 value="4241c14a7727c34feea6507ec801318a3d4a90f070e4525681079fb94ee4c593" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="gson-2.10.1.pom">
+ <sha256 value="d2b115634f5c085db4b9c9ffc2658e89e231fdbfbe2242121a1cd95d4d948dd7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.code.gson" name="gson" version="2.11.0">
+ <artifact name="gson-2.11.0.jar">
+ <sha256 value="57928d6e5a6edeb2abd3770a8f95ba44dce45f3b23b7a9dc2b309c581552a78b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="gson-2.11.0.pom">
+ <sha256 value="c0e547bea998888e6e25c5886a90e762272bc88b5275343dd2c05ded6ca2e360" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.code.gson" name="gson" version="2.8.9">
+ <artifact name="gson-2.8.9.jar">
+ <sha256 value="d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="gson-2.8.9.pom">
+ <sha256 value="afded6e6a690fbf3ad4ae65ada397f0a90a5f630b303d1b741b9c97926fdd4de" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.code.gson" name="gson-parent" version="2.10.1">
+ <artifact name="gson-parent-2.10.1.pom">
+ <sha256 value="4248e0882426c615182385d6086c3ef3262e769957189e29306280b85482b833" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.code.gson" name="gson-parent" version="2.11.0">
+ <artifact name="gson-parent-2.11.0.pom">
+ <sha256 value="8acb1f3b72a6f026916ac0735bad9aab0293d527edb7b365327def13a9367b7a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.code.gson" name="gson-parent" version="2.8.9">
+ <artifact name="gson-parent-2.8.9.pom">
+ <sha256 value="b16e026e63427c1972ad0fc68703ec379b1576e411ba49c32fa9a31ab0bbcffb" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.crypto.tink" name="tink" version="1.7.0">
+ <artifact name="tink-1.7.0.jar">
+ <sha256 value="88970a456a08ba4c66b01b23e5846ca1095cc14e54cb48363e5d2e15a1307308" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="tink-1.7.0.pom">
+ <sha256 value="2aee3523715f8f2cd10b2603c8d19e561ac758310b7e2c9853946d2c5e7b4bf7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.dagger" name="dagger" version="2.28.3">
+ <artifact name="dagger-2.28.3.jar">
+ <sha256 value="f1dd23f8ae34a8e91366723991ead0d6499d1a3e9163ce550c200b02d76a872b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="dagger-2.28.3.pom">
+ <sha256 value="265ba959a8e13c3a06133f04b539169c1018daffd4d33f53c453ab4cb386f570" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.dagger" name="dagger" version="2.48">
+ <artifact name="dagger-2.48.jar">
+ <sha256 value="1fa226d2b4a02cc80950fa4d49a4a235cc8eced499b581fc358a55446a83f579" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="dagger-2.48.pom">
+ <sha256 value="75fd748573e58075b1306f7fae19cf5b02c0b0850908f765131b092a1156a944" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.errorprone" name="error_prone_annotations" version="2.18.0">
+ <artifact name="error_prone_annotations-2.18.0.pom">
+ <sha256 value="920135797dcca5917b5a5c017642a58d340a4cd1bcd12f56f892a5663bd7bddc" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.errorprone" name="error_prone_annotations" version="2.23.0">
+ <artifact name="error_prone_annotations-2.23.0.jar">
+ <sha256 value="ec6f39f068b6ff9ac323c68e28b9299f8c0a80ca512dccb1d4a70f40ac3ec054" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="error_prone_annotations-2.23.0.pom">
+ <sha256 value="d5abb17f231b63bf009358fa640281b744810cb9587e5994977834959c07dbd8" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.errorprone" name="error_prone_annotations" version="2.27.0">
+ <artifact name="error_prone_annotations-2.27.0.pom">
+ <sha256 value="4ca5a35d61235e16549ac346d1e34551cdf0fe27e84aa57e03cbeb255ea4e5da" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.errorprone" name="error_prone_annotations" version="2.28.0">
+ <artifact name="error_prone_annotations-2.28.0.jar">
+ <sha256 value="f3fc8a3a0a4020706a373b00e7f57c2512dd26d1f83d28c7d38768f8682b231e" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="error_prone_annotations-2.28.0.pom">
+ <sha256 value="0ce909f13a568148476e5ee200f380f98c75ba08971aaf15db295eb77598ef3a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.errorprone" name="error_prone_annotations" version="2.3.1">
+ <artifact name="error_prone_annotations-2.3.1.pom">
+ <sha256 value="3edce6b711ba368efe16b9b7aacb0214fbd648414cb9b965953a2e7ed89a819a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.errorprone" name="error_prone_annotations" version="2.30.0">
+ <artifact name="error_prone_annotations-2.30.0.jar">
+ <sha256 value="144f3aefbd6e27daec55d3753b2c6b13c1afdaf0cf04816cdb564588ed92f1bd" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="error_prone_annotations-2.30.0.pom">
+ <sha256 value="f713849c23b34953e854565dce8aa795cae0c1416611b720c21461322c795f86" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.errorprone" name="error_prone_parent" version="2.18.0">
+ <artifact name="error_prone_parent-2.18.0.pom">
+ <sha256 value="47f22e99c7bf466391def16f8377985e5d3ba6f5bbcf65853644805513e15fad" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.errorprone" name="error_prone_parent" version="2.23.0">
+ <artifact name="error_prone_parent-2.23.0.pom">
+ <sha256 value="f5470a4b3104fe309fbe94a80d16c3c54d20f748f4c5de4f68a428688f30cbd4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.errorprone" name="error_prone_parent" version="2.27.0">
+ <artifact name="error_prone_parent-2.27.0.pom">
+ <sha256 value="fa81829d049559df6927f9c9a6fd6bbd09f8b50e6d4736ae72c8300b6c3d7654" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.errorprone" name="error_prone_parent" version="2.28.0">
+ <artifact name="error_prone_parent-2.28.0.pom">
+ <sha256 value="accefdbb5416cef5fcd2ddc37db4f1fcb34a2193cc1a55dfe5970a131b3e7683" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.errorprone" name="error_prone_parent" version="2.3.1">
+ <artifact name="error_prone_parent-2.3.1.pom">
+ <sha256 value="767525d9a81129cd081968382980336327be4162b1e2251a182911daa733c123" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.errorprone" name="error_prone_parent" version="2.30.0">
+ <artifact name="error_prone_parent-2.30.0.pom">
+ <sha256 value="5e8834ccc0e5ed0c72f306c250b518e6ad10d075a9b7b910cf695cba1ee02a2d" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.flatbuffers" name="flatbuffers-java" version="1.12.0">
+ <artifact name="flatbuffers-java-1.12.0.jar">
+ <sha256 value="3f8c088b4dd04a9858721f2e162508c94db0dd86f961e306ee63ef2eda871bf7" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="flatbuffers-java-1.12.0.pom">
+ <sha256 value="cb226baf546260770f21e8152a6aa88ba15230d739f750df480f2a668d43e0eb" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.guava" name="failureaccess" version="1.0.1">
+ <artifact name="failureaccess-1.0.1.jar">
+ <sha256 value="a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="failureaccess-1.0.1.pom">
+ <sha256 value="e96042ce78fecba0da2be964522947c87b40a291b5fd3cd672a434924103c4b9" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.guava" name="failureaccess" version="1.0.2">
+ <artifact name="failureaccess-1.0.2.jar">
+ <sha256 value="8a8f81cf9b359e3f6dfa691a1e776985c061ef2f223c9b2c80753e1b458e8064" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="failureaccess-1.0.2.pom">
+ <sha256 value="19ebc6f4bdb4edbb3d07b6ee994f846b54ef295582a9b5634719ffa9f31d03b2" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.guava" name="guava" version="32.0.1-jre">
+ <artifact name="guava-32.0.1-jre.jar">
+ <sha256 value="bd7fa227591fb8509677d0d1122cf95158f3b8a9f45653f58281d879f6dc48c5" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="guava-32.0.1-jre.pom">
+ <sha256 value="42c257f7f736d377b31afeeee978ab26d730cd70af60dde7662e182352e2482a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.guava" name="guava" version="33.3.1-jre">
+ <artifact name="guava-33.3.1-jre.jar">
+ <sha256 value="4bf0e2c5af8e4525c96e8fde17a4f7307f97f8478f11c4c8e35a0e3298ae4e90" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="guava-33.3.1-jre.module">
+ <sha256 value="41858c84753fd96a6b7c51122fccef39558c91cc08264e08506bcf20e0e63733" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.guava" name="guava-parent" version="26.0-android">
+ <artifact name="guava-parent-26.0-android.pom">
+ <sha256 value="f8698ab46ca996ce889c1afc8ca4f25eb8ac6b034dc898d4583742360016cc04" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.guava" name="guava-parent" version="32.0.1-jre">
+ <artifact name="guava-parent-32.0.1-jre.pom">
+ <sha256 value="43ed0e36b353f41e5eb75cd756667c9e2df97cef06eb16066967158a1d034d2a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.guava" name="guava-parent" version="33.3.1-jre">
+ <artifact name="guava-parent-33.3.1-jre.pom">
+ <sha256 value="55441db27e8869dfefe053059bdf478bdc7e95585642bf391f0023345fd56287" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.guava" name="listenablefuture" version="9999.0-empty-to-avoid-conflict-with-guava">
+ <artifact name="listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar">
+ <sha256 value="b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom">
+ <sha256 value="18d4b1db26153d4e55079ce1f76bb1fe05cdb862ef9954a88cbcc4ff38b8679b" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.j2objc" name="j2objc-annotations" version="2.8">
+ <artifact name="j2objc-annotations-2.8.jar">
+ <sha256 value="f02a95fa1a5e95edb3ed859fd0fb7df709d121a35290eff8b74dce2ab7f4d6ed" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="j2objc-annotations-2.8.pom">
+ <sha256 value="37f87798b18385113c918bfa9e1276fe50735ef8fa849b5800c519d54dbf11f8" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.j2objc" name="j2objc-annotations" version="3.0.0">
+ <artifact name="j2objc-annotations-3.0.0.jar">
+ <sha256 value="88241573467ddca44ffd4d74aa04c2bbfd11bf7c17e0c342c94c9de7a70a7c64" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="j2objc-annotations-3.0.0.pom">
+ <sha256 value="23b3d039e168ad89dd114698e6dd7be383f4a2c577b8877d82c73a6515e74a17" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.jimfs" name="jimfs" version="1.1">
+ <artifact name="jimfs-1.1.jar">
+ <sha256 value="c4828e28d7c0a930af9387510b3bada7daa5c04d7c25a75c7b8b081f1c257ddd" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jimfs-1.1.pom">
+ <sha256 value="efa86e5cd922f17b472fdfcae57234d8d4ac3e148b6250737dfce454af7a7a44" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.jimfs" name="jimfs-parent" version="1.1">
+ <artifact name="jimfs-parent-1.1.pom">
+ <sha256 value="c71555751e57e0ef912870e8ac9625ae782502a6a5b9c19ccf83b2a97d8b26bd" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.protobuf" name="protobuf-bom" version="3.22.3">
+ <artifact name="protobuf-bom-3.22.3.pom">
+ <sha256 value="13a32dfb9de6fc1c3c3f7af53e4d5c77fd77d2b476bae38b74b7581cdee2e655" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.protobuf" name="protobuf-bom" version="3.24.4">
+ <artifact name="protobuf-bom-3.24.4.pom">
+ <sha256 value="04ecfd52c50df07a75551f9b09e0ef30630ee4237d091ca0eca71e5bfb78cce5" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.protobuf" name="protobuf-bom" version="3.25.5">
+ <artifact name="protobuf-bom-3.25.5.pom">
+ <sha256 value="080e2984173238b50e064c226afffbb1b0233520295c790a7fd3d6ae4593f063" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.protobuf" name="protobuf-java" version="3.24.4">
+ <artifact name="protobuf-java-3.24.4.jar">
+ <sha256 value="e5655522be1aa5cc1f2f092aa036b0445157f294928eedf1332ac938c7b69686" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="protobuf-java-3.24.4.pom">
+ <sha256 value="3941221ca657819ddebd95fe8b740f470af7abf30460b13ea1c9ab79f10fab91" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.protobuf" name="protobuf-java" version="3.25.5">
+ <artifact name="protobuf-java-3.25.5.jar">
+ <sha256 value="8540247fad9e06baefa8fb45eb313802d019f485f14300e0f9d6b556ed88e753" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="protobuf-java-3.25.5.pom">
+ <sha256 value="e752032157a7a39be9be3786684075452a46cd586b2865abd33e707568a4c8af" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.protobuf" name="protobuf-java-util" version="3.22.3">
+ <artifact name="protobuf-java-util-3.22.3.jar">
+ <sha256 value="c615f76879dc5c303e4df5b94a6afa39534058c7545db2d483fd95d9f63c8bfe" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="protobuf-java-util-3.22.3.pom">
+ <sha256 value="b44701b06a064865ec9b5614a93e9e28fadd7d4dfc4b460f21c819ef53dbe2d6" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.protobuf" name="protobuf-java-util" version="3.24.4">
+ <artifact name="protobuf-java-util-3.24.4.jar">
+ <sha256 value="133c929e2cfe3990a105d18eaccc49122b2d2fb492b420ef02d5d9f937eaebb8" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="protobuf-java-util-3.24.4.pom">
+ <sha256 value="9f0cec276d4d9d5a43d6e29cc2b024e46804c9386a96fa527eefd7bf7488e7f0" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.protobuf" name="protobuf-java-util" version="3.25.5">
+ <artifact name="protobuf-java-util-3.25.5.jar">
+ <sha256 value="dacc58b2c3d2fa8d4bddc1acb881e78d6cf7c137dd78bc1d67f6aca732436a8d" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="protobuf-java-util-3.25.5.pom">
+ <sha256 value="a09d190eaa6a79616bc5f4b5404e94b0cab559803a98c8a090c4099962f41f92" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.protobuf" name="protobuf-kotlin" version="3.24.4">
+ <artifact name="protobuf-kotlin-3.24.4.jar">
+ <sha256 value="508ca13d97b50f5404eaa37eb4493cb07884162eb7971bf924d8f803d4c21bb4" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="protobuf-kotlin-3.24.4.pom">
+ <sha256 value="3bb1e6ef94a6a436bd2ff66af0dd603c23ed3a2943b2fb899f83d9f8792d72a9" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.protobuf" name="protobuf-parent" version="3.22.3">
+ <artifact name="protobuf-parent-3.22.3.pom">
+ <sha256 value="399133d7f6f57934dd76c4b18e86348f424532108daf4a01c8f820b8665f0929" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.protobuf" name="protobuf-parent" version="3.24.4">
+ <artifact name="protobuf-parent-3.24.4.pom">
+ <sha256 value="fb7ec0505876fdb9ec79510aced2d1eb04c3b8cfc690b589049757ca981cadb3" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.protobuf" name="protobuf-parent" version="3.25.5">
+ <artifact name="protobuf-parent-3.25.5.pom">
+ <sha256 value="64cc0e3ad6e85f5aec8f9dcf9341d1379e9525364ff53e23e16d8d5824673ef7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.testing.platform" name="android-device-provider-local" version="0.0.9-alpha03">
+ <artifact name="android-device-provider-local-0.0.9-alpha03.jar">
+ <sha256 value="667a4d35bbba87d3c86f5180dfa521fdbd7a4ef5c60d949154b0301f3e232e1b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-device-provider-local-0.0.9-alpha03.pom">
+ <sha256 value="913b3aee95a71581a409038b1cca273ce835d3f2b8f2ab5a600bbed769ea6dfd" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.testing.platform" name="android-driver-instrumentation" version="0.0.9-alpha03">
+ <artifact name="android-driver-instrumentation-0.0.9-alpha03.jar">
+ <sha256 value="507c632ec7db77bcb299b5519d59b14cc6243aac541767c632fdbeddc6226b07" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-driver-instrumentation-0.0.9-alpha03.pom">
+ <sha256 value="02d5c14ad0995971a108819075a7175d10076bd7152772ced3442bb19c4c1b53" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.testing.platform" name="android-test-plugin" version="0.0.9-alpha03">
+ <artifact name="android-test-plugin-0.0.9-alpha03.jar">
+ <sha256 value="d6cb7e126f433037190bcd3c3b904b19ba842d46b17b0fd27c38cc4ccecbec90" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="android-test-plugin-0.0.9-alpha03.pom">
+ <sha256 value="a82b9c10caaa8e5d1f3cdb63847a9b03ac9738a525b309ab70d4d1661edfea22" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.testing.platform" name="core" version="0.0.9-alpha03">
+ <artifact name="core-0.0.9-alpha03.jar">
+ <sha256 value="6e1806d015c416596f53a45a3100e25743c313a6e3fc4f52f24e8b257f2c82ce" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="core-0.0.9-alpha03.pom">
+ <sha256 value="9f03da959b3261cc1eb9c8886bf8aed6f5d60bb95b8d8638bed55443ae620c2a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.testing.platform" name="core-proto" version="0.0.9-alpha03">
+ <artifact name="core-proto-0.0.9-alpha03.jar">
+ <sha256 value="d001eb0ccbbfc8cb9eaa193a358e63712974639775647be949ab232c2b29b407" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="core-proto-0.0.9-alpha03.pom">
+ <sha256 value="3bb45280df1dd1c96b9a01724a614566b7d60d33453fcd52c2c741f9999c3a4e" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.google.testing.platform" name="launcher" version="0.0.9-alpha03">
+ <artifact name="launcher-0.0.9-alpha03.jar">
+ <sha256 value="0012f980a059a0c4c216d0f1d0016867ab31eb8079e3f8f879f1f02b7be3a6e7" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="launcher-0.0.9-alpha03.pom">
+ <sha256 value="18b80f34a5e9fa1a5eec2250fd71e5465f2eb4b4d09e181940e38f1b6e064452" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.googlecode.juniversalchardet" name="juniversalchardet" version="1.0.3">
+ <artifact name="juniversalchardet-1.0.3.jar">
+ <sha256 value="757bfe906193b8b651e79dc26cd67d6b55d0770a2cdfb0381591504f779d4a76" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="juniversalchardet-1.0.3.pom">
+ <sha256 value="7846399b35c7cd642a9b3a000c3e2d62d04eb37a4547b6933cc8b18bcc2f086b" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.squareup" name="javapoet" version="1.10.0">
+ <artifact name="javapoet-1.10.0.jar">
+ <sha256 value="20ef4b82e43ff7c652281a21313cf3b941092467add3fa73509c26f6969efdab" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="javapoet-1.10.0.pom">
+ <sha256 value="1690340a222279f2cbadf373e88826fa20f7f3cc3ec0252f36818fed32701ab1" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.squareup" name="javawriter" version="2.5.0">
+ <artifact name="javawriter-2.5.0.jar">
+ <sha256 value="fcfb09fb0ea0aa97d3cfe7ea792398081348e468f126b3603cb3803f240197f0" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="javawriter-2.5.0.pom">
+ <sha256 value="e1abd7f1116cf5e0c59947693e2189208ec94296b2a3394c959e3511d399a7b0" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.sun.activation" name="all" version="1.2.0">
+ <artifact name="all-1.2.0.pom">
+ <sha256 value="1d8518e3ac7532a104e4f7be77def37c982e530723c6bdb3d67708cce2b0c2c4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.sun.activation" name="all" version="1.2.1">
+ <artifact name="all-1.2.1.pom">
+ <sha256 value="360883bf64486ecef161b8f282f6503536dd1a670d53a0a871c8fb20170e6795" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.sun.activation" name="javax.activation" version="1.2.0">
+ <artifact name="javax.activation-1.2.0.jar">
+ <sha256 value="993302b16cd7056f21e779cc577d175a810bb4900ef73cd8fbf2b50f928ba9ce" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="javax.activation-1.2.0.pom">
+ <sha256 value="f879b6e945854c6900b0dbee1c8384d7ab3de7e157fd7ac84937405c416d2a5e" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.sun.istack" name="istack-commons" version="3.0.8">
+ <artifact name="istack-commons-3.0.8.pom">
+ <sha256 value="a0f0517e8512f0fbcc7b8295c12f6566a3d0c2d86d655639dc662ef8c0c7ebe5" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.sun.istack" name="istack-commons-runtime" version="3.0.8">
+ <artifact name="istack-commons-runtime-3.0.8.jar">
+ <sha256 value="4ffabb06be454a05e4398e20c77fa2b6308d4b88dfbef7ca30a76b5b7d5505ef" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="istack-commons-runtime-3.0.8.pom">
+ <sha256 value="c2e014d34cb84ed287d064986c45c305a4124228a7337eccf6c421d14d708f1c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.sun.xml.bind" name="jaxb-bom-ext" version="2.3.2">
+ <artifact name="jaxb-bom-ext-2.3.2.pom">
+ <sha256 value="1a7dec2b27e7e055744cdb8cf1b90def4fd473acd1b804eff098139358959bd7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.sun.xml.bind.mvn" name="jaxb-parent" version="2.3.2">
+ <artifact name="jaxb-parent-2.3.2.pom">
+ <sha256 value="20dd6dc34ab7549ac40da1d82e92222ec4347ad0ec0cb118ef6c5703bed53a18" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.sun.xml.bind.mvn" name="jaxb-runtime-parent" version="2.3.2">
+ <artifact name="jaxb-runtime-parent-2.3.2.pom">
+ <sha256 value="b24f8d51f184a68bc1b86d48c0e3cfefeb21a44ede1c5f7303c58ae0488533ec" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.sun.xml.bind.mvn" name="jaxb-txw-parent" version="2.3.2">
+ <artifact name="jaxb-txw-parent-2.3.2.pom">
+ <sha256 value="b55d3efa9b158f483a30e92c78ccb600f93314733d089eba9b74436f01b314a4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.sun.xml.fastinfoset" name="FastInfoset" version="1.2.16">
+ <artifact name="FastInfoset-1.2.16.jar">
+ <sha256 value="056f3a1e144409f21ed16afc26805f58e9a21f3fce1543c42d400719d250c511" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="FastInfoset-1.2.16.pom">
+ <sha256 value="e147d258ab6e6691f70599a952400e6e6c7558f8c9c028dbe1be23178308e830" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="com.sun.xml.fastinfoset" name="fastinfoset-project" version="1.2.16">
+ <artifact name="fastinfoset-project-1.2.16.pom">
+ <sha256 value="90582425adc1f40b41362dafb95173931225acaa5e79620d5e6bd52f646292ba" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="commons-codec" name="commons-codec" version="1.10">
+ <artifact name="commons-codec-1.10.jar">
+ <sha256 value="4241dfa94e711d435f29a4604a3e2de5c4aa3c165e23bd066be6fc1fc4309569" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="commons-codec-1.10.pom">
+ <sha256 value="bdb8db7012d112a6e3ea8fdb7c510b300d99eff0819d27dddba9c43397ea4cfb" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="commons-codec" name="commons-codec" version="1.11">
+ <artifact name="commons-codec-1.11.jar">
+ <sha256 value="e599d5318e97aa48f42136a2927e6dfa4e8881dff0e6c8e3109ddbbff51d7b7d" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="commons-codec-1.11.pom">
+ <sha256 value="c1e7140d1dea8fdf3528bc1e3c5444ac0b541297311f45f9806c213ec3ee9a10" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="commons-io" name="commons-io" version="2.16.1">
+ <artifact name="commons-io-2.16.1.jar">
+ <sha256 value="f41f7baacd716896447ace9758621f62c1c6b0a91d89acee488da26fc477c84f" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="commons-io-2.16.1.pom">
+ <sha256 value="5777d292251c7895c04a4c57015683ec3b353a12486c9b3e7178e9b0b3c38fff" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="commons-logging" name="commons-logging" version="1.2">
+ <artifact name="commons-logging-1.2.jar">
+ <sha256 value="daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="commons-logging-1.2.pom">
+ <sha256 value="c91ab5aa570d86f6fd07cc158ec6bc2c50080402972ee9179fe24100739fbb20" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-api" version="1.57.2">
+ <artifact name="grpc-api-1.57.2.jar">
+ <sha256 value="42b72e6572c084055ac3ce03e6efe433eb05ef620b3daf5136a4359fc72cc3e1" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-api-1.57.2.pom">
+ <sha256 value="c7df4551a64f0282a766e809514d4238450a7429055f9c7718881d16a310a026" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-api" version="1.69.1">
+ <artifact name="grpc-api-1.69.1.jar">
+ <sha256 value="a8d3d6dcc71f3ab613d668842282b488bdd93d3e99a0ef5dca7eee6fa734c283" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-api-1.69.1.pom">
+ <sha256 value="beaf2e475d5c45d0634d4d324bf84db2a8d6a92922971e6f7dc27e851c42907f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-context" version="1.27.2">
+ <artifact name="grpc-context-1.27.2.pom">
+ <sha256 value="0f212b14ebd834cbed9bd8869a5d6c9c1798eceb512c7fcc28da89f6f8a4edd8" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-context" version="1.57.2">
+ <artifact name="grpc-context-1.57.2.jar">
+ <sha256 value="9b8ac88d9cef2819daffed7bdbd2f22680237d482c6c671fe02d36da3f08cf00" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-context-1.57.2.pom">
+ <sha256 value="8927f77d6381e24487682708196a6ca728368b8fd7cebb104fd9324b6b124917" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-context" version="1.69.1">
+ <artifact name="grpc-context-1.69.1.jar">
+ <sha256 value="45ef95b8c158a8b5bdd3acb67b9e682ef25414bb148f488ec847438ab64715d4" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-context-1.69.1.pom">
+ <sha256 value="6de29bceab25a1bd0be11eea8468d0e3f1c0c476d0a533215b4fde1c8284b570" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-core" version="1.57.2">
+ <artifact name="grpc-core-1.57.2.jar">
+ <sha256 value="5a10070abfeb4966ec4d580961dcc4e7f69fa83ab25242f92c1765efb07b8606" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-core-1.57.2.pom">
+ <sha256 value="0a97201afe17874f035f8a25ffb970678e49aadf2992c7d97c6ff9fb1d5da211" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-core" version="1.69.1">
+ <artifact name="grpc-core-1.69.1.jar">
+ <sha256 value="51352cadaecbf9a4a4aa42d93f6f1fc728f1fd01b051680383ed09e5631ffbd0" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-core-1.69.1.pom">
+ <sha256 value="968098f4a8451bbcd3d7b88c6a8ab5b7a74ef80dfdee7a6052f352fff783b2c5" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-inprocess" version="1.69.1">
+ <artifact name="grpc-inprocess-1.69.1.jar">
+ <sha256 value="b7c6ac0e3abf4b8d582610d632d79417bc3da81254e1a4bcf7f01e8db7bd55ef" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-inprocess-1.69.1.pom">
+ <sha256 value="febb30a5cf238237d075a3923e893992183daf171a1eb434acf132114a5f7f8a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-netty" version="1.57.2">
+ <artifact name="grpc-netty-1.57.2.jar">
+ <sha256 value="9809d4c10c94d11e7b2946cdeb5b2884be20a09510289544f37569f02c877a21" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-netty-1.57.2.pom">
+ <sha256 value="8b12161cf2aacfbf398fb5afc3b0d73a21af206ba50c3d8f7bf4f6c4b375ebf8" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-netty" version="1.69.1">
+ <artifact name="grpc-netty-1.69.1.jar">
+ <sha256 value="52a86ed66f78933e83d1a3fb7162ad1667489564c4556366b7a3579c7024a447" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-netty-1.69.1.pom">
+ <sha256 value="8f06650cc91428cc513111bfebbeabf79994185d72444b02e5dfaca38be43714" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-protobuf" version="1.57.2">
+ <artifact name="grpc-protobuf-1.57.2.jar">
+ <sha256 value="31630d8a9e9f08a959862015e30a4863908be3680c3a686f4c1f08d2ffeaf706" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-protobuf-1.57.2.pom">
+ <sha256 value="c5e2292802053977f04610b170484a9a1ea6af1541c144b27d18840ac544fa9d" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-protobuf" version="1.69.1">
+ <artifact name="grpc-protobuf-1.69.1.jar">
+ <sha256 value="4c52ef948fb8987a3baa7d46ba362b7bf307dd3c51f29241cd5c598398a010df" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-protobuf-1.69.1.pom">
+ <sha256 value="bf4ca76d2ace44d9694714fbcf3fd729c98ef2e5863ab920a483c052a22f4423" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-protobuf-lite" version="1.57.2">
+ <artifact name="grpc-protobuf-lite-1.57.2.jar">
+ <sha256 value="fc4917dc5d419ac810fb3f27523c14e75e1fe50372154fab29324215ee6a955a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-protobuf-lite-1.57.2.pom">
+ <sha256 value="60778c1ea407a3ba0a7f0f09df099e8272278e8abc29822c9cf50e1a052f1b75" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-protobuf-lite" version="1.69.1">
+ <artifact name="grpc-protobuf-lite-1.69.1.jar">
+ <sha256 value="c29f90fadf3c7620f9359a243c067dd85b73bd765b28f3d95df910ac2d331555" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-protobuf-lite-1.69.1.pom">
+ <sha256 value="263f1f844d756c15db5fab8869965e33722b3f4fe907fe1c885a90e046461731" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-services" version="1.57.2">
+ <artifact name="grpc-services-1.57.2.jar">
+ <sha256 value="057a43ba647833756ab2f851bac80a3b9f8dce026fc1ac1f17d4f315648f4172" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-services-1.57.2.pom">
+ <sha256 value="747601a03a58a18979819ac52ceffc586b8f9c6a6b422e1723f326af48813eb9" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-stub" version="1.57.2">
+ <artifact name="grpc-stub-1.57.2.jar">
+ <sha256 value="84d2af12719168f76375f2afdfd6eb5133a865edba9244d40e6b968e3adde1d3" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-stub-1.57.2.pom">
+ <sha256 value="2159e614a8794775eb98e2e1c85834ab4e5911be1c4a75c7163a993e9c892bac" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-stub" version="1.69.1">
+ <artifact name="grpc-stub-1.69.1.jar">
+ <sha256 value="e39c63273d53052ebe9f638d8ae98176735ec567328d9a17092cddb6f239b8c2" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-stub-1.69.1.pom">
+ <sha256 value="f5ad8157ec40d8a2347632965d6a03d18a48ad4625f32eb64b37a7a470ce53bb" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.grpc" name="grpc-util" version="1.69.1">
+ <artifact name="grpc-util-1.69.1.jar">
+ <sha256 value="dd597bd675eaa042f3e3578648d9050c813c4595c5de6869ef9ddbb449006031" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="grpc-util-1.69.1.pom">
+ <sha256 value="d20d3468cb74d56be55ed3d46f63ca38ee4bca0918d9aad7277a448f6e07a5b4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-buffer" version="4.1.110.Final">
+ <artifact name="netty-buffer-4.1.110.Final.jar">
+ <sha256 value="46d74e79125aacc055c31f18152fdc5d4a569aa8d60091203d0baa833973ac3c" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-buffer-4.1.110.Final.pom">
+ <sha256 value="710ac19cc01cd80df6be9a3faad3c222b4a1a32f4b55137be07b6099d5da3562" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-buffer" version="4.1.93.Final">
+ <artifact name="netty-buffer-4.1.93.Final.jar">
+ <sha256 value="007c7d9c378df02d390567d0d7ddf542ffddb021b7313dbf502392113ffabb08" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-buffer-4.1.93.Final.pom">
+ <sha256 value="83fbc54e2b73b86d55b208f618d1a2a156910ec146f7ece57565007b750add78" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-codec" version="4.1.110.Final">
+ <artifact name="netty-codec-4.1.110.Final.jar">
+ <sha256 value="9eccce9a8d827bb8ce84f9c3183fec58bd1c96a51010cf711297746034af3701" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-codec-4.1.110.Final.pom">
+ <sha256 value="a806bb536bb323665baff7cd1223f2b272a2d4717ab4f9b12361086daae5df3e" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-codec" version="4.1.93.Final">
+ <artifact name="netty-codec-4.1.93.Final.jar">
+ <sha256 value="990c378168dc6364c6ff569701f4f2f122fffe8998b3e189eba4c4d868ed1084" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-codec-4.1.93.Final.pom">
+ <sha256 value="19cded267a070dff1abc9d029b552fad262acc1aba5c6c67b2278fca113a26ab" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-codec-http" version="4.1.110.Final">
+ <artifact name="netty-codec-http-4.1.110.Final.jar">
+ <sha256 value="dc0d6af5054630a70ff0ef354f20aa7a6e46738c9fc5636ed3d4fe77e38bd48d" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-codec-http-4.1.110.Final.pom">
+ <sha256 value="51ae990af14a321db6d3d6884b917b7d4363eb60dddc0f1493b18021a142e7ad" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-codec-http" version="4.1.93.Final">
+ <artifact name="netty-codec-http-4.1.93.Final.jar">
+ <sha256 value="dacf78ce78ab2d29570325db4cd2451ea589639807de95881a0fa7155a9e6b55" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-codec-http-4.1.93.Final.pom">
+ <sha256 value="a3dafff071b6d284e8063d96843de2bb83cf3b889eae0cc9e0adb64a57a31b82" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-codec-http2" version="4.1.110.Final">
+ <artifact name="netty-codec-http2-4.1.110.Final.jar">
+ <sha256 value="b546c75445a487bb7bcd5a94779caecce33582cf7be31b8b39fc0e65b1ee26fc" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-codec-http2-4.1.110.Final.pom">
+ <sha256 value="29d2f6c26c3cca9fe8393671707fe8ef9c3e31020a2dfe06b82c426499c25837" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-codec-http2" version="4.1.93.Final">
+ <artifact name="netty-codec-http2-4.1.93.Final.jar">
+ <sha256 value="d96cc09045a1341c6d47494352aa263b87b72fb1d2ea9eca161aa73820bfe8bb" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-codec-http2-4.1.93.Final.pom">
+ <sha256 value="084433b42d541f7ac4b59287dd253285cfda3a3d65de72e7368bb7ec3d367271" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-codec-socks" version="4.1.110.Final">
+ <artifact name="netty-codec-socks-4.1.110.Final.jar">
+ <sha256 value="976052a3c9bb280bc6d99f3a29e6404677cf958c3de05b205093d38c006b880c" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-codec-socks-4.1.110.Final.pom">
+ <sha256 value="ffe57b316191dd4f96bee66c5709c13cbdb4ecab085c010c8db0c6aa809abf6c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-codec-socks" version="4.1.93.Final">
+ <artifact name="netty-codec-socks-4.1.93.Final.jar">
+ <sha256 value="0ea47b5ba23ca1da8eb9146c8fc755c1271414633b1e2be2ce1df764ba0fff2a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-codec-socks-4.1.93.Final.pom">
+ <sha256 value="8cd816ed991a946041bab4cb24bd9c8e41ee0692512511f2d83cef538eb605d7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-common" version="4.1.110.Final">
+ <artifact name="netty-common-4.1.110.Final.jar">
+ <sha256 value="9851ec66548b9e0d41164ce98943cdd4bbe305f68ddbd24eae52e4501a0d7b1a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-common-4.1.110.Final.pom">
+ <sha256 value="7d417f5335304dae1ea08a06586038c83fe8ad84c1d35baa15ed11921cef7920" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-common" version="4.1.93.Final">
+ <artifact name="netty-common-4.1.93.Final.jar">
+ <sha256 value="443bb316599fb16e3baeba2fb58881814d7ff0b7af176fe76e38071a6e86f8c0" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-common-4.1.93.Final.pom">
+ <sha256 value="42d883b13eb38cabf549616462c5f331f5333bf0c8fc9215744f83c0180a4f6b" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-handler" version="4.1.110.Final">
+ <artifact name="netty-handler-4.1.110.Final.jar">
+ <sha256 value="d5a08d7de364912e4285968de4d4cce3f01da4bb048d5c6937e5f2af1f8e148a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-handler-4.1.110.Final.pom">
+ <sha256 value="4d43c13d14f5635a2f8b0d5094d7a31c509ee0f52c724eba0ef30cffe3ea1555" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-handler" version="4.1.93.Final">
+ <artifact name="netty-handler-4.1.93.Final.jar">
+ <sha256 value="4e5f563ae14ed713381816d582f5fcfd0615aefb29203486cdfb782d8a00a02b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-handler-4.1.93.Final.pom">
+ <sha256 value="84a1525cac0b4759efaef2997a47fe19b9b5642f9273fa0fd58a2e76c7a059fe" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-handler-proxy" version="4.1.110.Final">
+ <artifact name="netty-handler-proxy-4.1.110.Final.jar">
+ <sha256 value="ad54ab4fe9c47ef3e723d71251126db53e8db543871adb9eafc94446539eff52" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-handler-proxy-4.1.110.Final.pom">
+ <sha256 value="c613cb4e7e06f42efa31db8d8b2a339ed8bf41f00c46d38d0909a4c06c656dcf" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-handler-proxy" version="4.1.93.Final">
+ <artifact name="netty-handler-proxy-4.1.93.Final.jar">
+ <sha256 value="2ac5f7fbefa0b73ef783889069344d5515505a14b2303be693c5002c486df2b4" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-handler-proxy-4.1.93.Final.pom">
+ <sha256 value="6dc50da0e67f597812874f81eaa45404f7d076b8199ea9088932a85c1b610245" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-parent" version="4.1.110.Final">
+ <artifact name="netty-parent-4.1.110.Final.pom">
+ <sha256 value="685adaf373666fc15427c810f8aff3a4fe194a97c7ed74b69d07c548f0d42f1c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-parent" version="4.1.93.Final">
+ <artifact name="netty-parent-4.1.93.Final.pom">
+ <sha256 value="b109cb76f375fedb8a9ef75ac58063170deb7ea2ddd024f466fef6dc65cdfcee" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-resolver" version="4.1.110.Final">
+ <artifact name="netty-resolver-4.1.110.Final.jar">
+ <sha256 value="a2e9b4ae7caa92fc5bd747e11d1dec20d81b18fc00959554302244ac5c56ce70" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-resolver-4.1.110.Final.pom">
+ <sha256 value="655f34192e8c7618b3c5a79e488e4daa35def41b0d16d45fa36523c3b4c9f641" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-resolver" version="4.1.93.Final">
+ <artifact name="netty-resolver-4.1.93.Final.jar">
+ <sha256 value="e59770b66e81822e5d111ac4e544d7eb0c543e0a285f52628e53941acd8ed759" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-resolver-4.1.93.Final.pom">
+ <sha256 value="5b350c3c91e9e55d29cbe68cfe4ef2116cc1f0328677ebf9f615bab7082c79f4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-transport" version="4.1.110.Final">
+ <artifact name="netty-transport-4.1.110.Final.jar">
+ <sha256 value="a42dd68390ca14b4ff2d40628a096c76485b4adb7c19602d5289321a0669e704" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-transport-4.1.110.Final.pom">
+ <sha256 value="30f5da0e7646f1840d632f88615c8b9d8205499d68559b9c4547b3b04a0683cd" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-transport" version="4.1.93.Final">
+ <artifact name="netty-transport-4.1.93.Final.jar">
+ <sha256 value="a5a78019bc1cd43dbc3c7b7cdd3801912ca26d1f498fb560514fee497864ba96" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-transport-4.1.93.Final.pom">
+ <sha256 value="0dd62a0eb3cb1ea001a4d0426e4f5c08df1c70d9265675bffa5c583613422d43" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-transport-native-unix-common" version="4.1.110.Final">
+ <artifact name="netty-transport-native-unix-common-4.1.110.Final.jar">
+ <sha256 value="51717bb7471141950390c6713a449fdb1054d07e60737ee7dda7083796cdee48" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-transport-native-unix-common-4.1.110.Final.pom">
+ <sha256 value="ea18ce04c9a97ac0c51f4e397b185229fd95997e90b11339adcf7c51946d53d8" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.netty" name="netty-transport-native-unix-common" version="4.1.93.Final">
+ <artifact name="netty-transport-native-unix-common-4.1.93.Final.jar">
+ <sha256 value="774165a1c4dbaacb17f9c1ad666b3569a6a59715ae828e7c3d47703f479a53e7" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="netty-transport-native-unix-common-4.1.93.Final.pom">
+ <sha256 value="15bc25b67ff0a49272b270ef2b8cffd620057ca16cb29dff7ad5661adca2ae12" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.opencensus" name="opencensus-api" version="0.31.0">
+ <artifact name="opencensus-api-0.31.0.jar">
+ <sha256 value="702ba55d78f39d55195dcf041fdfaab7a7490a9ac45013542487ed9e4d3a4d23" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="opencensus-api-0.31.0.pom">
+ <sha256 value="9b479591e7c3e0ab45381fa043a91657815bdd8c3593af010c7ac36f4c905919" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.opencensus" name="opencensus-proto" version="0.2.0">
+ <artifact name="opencensus-proto-0.2.0.jar">
+ <sha256 value="0c192d451e9dd74e98721b27d02f0e2b6bca44b51563b5dabf2e211f7a3ebf13" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="opencensus-proto-0.2.0.pom">
+ <sha256 value="b7087907920fc8a81534686b2f1a2b331127af97f015abbdb3786a51f3fa1e52" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.perfmark" name="perfmark-api" version="0.26.0">
+ <artifact name="perfmark-api-0.26.0.jar">
+ <sha256 value="b7d23e93a34537ce332708269a0d1404788a5b5e1949e82f5535fce51b3ea95b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="perfmark-api-0.26.0.module">
+ <sha256 value="31d832332474ce48150f5bae003343319136f336afd1076a289029319e3ea97a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.perfmark" name="perfmark-api" version="0.27.0">
+ <artifact name="perfmark-api-0.27.0.jar">
+ <sha256 value="c7b478503ec524e55df19b424d46d27c8a68aeb801664fadd4f069b71f52d0f6" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="perfmark-api-0.27.0.module">
+ <sha256 value="9f6c4e6a62b8defd14173acdb7db293d086353b224923eef6293f58161893cca" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="jakarta.activation" name="jakarta.activation-api" version="1.2.1">
+ <artifact name="jakarta.activation-api-1.2.1.jar">
+ <sha256 value="8b0a0f52fa8b05c5431921a063ed866efaa41dadf2e3a7ee3e1961f2b0d9645b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jakarta.activation-api-1.2.1.pom">
+ <sha256 value="42585cb07dda7f23aa04eb5e0940061944a246a67ad3d16942fbe569ff03cd31" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="jakarta.xml.bind" name="jakarta.xml.bind-api" version="2.3.2">
+ <artifact name="jakarta.xml.bind-api-2.3.2.jar">
+ <sha256 value="69156304079bdeed9fc0ae3b39389f19b3cc4ba4443bc80508995394ead742ea" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jakarta.xml.bind-api-2.3.2.pom">
+ <sha256 value="b537b388dbab4cc0690b9d2fb0c74124d672531734567acf6e53130eab131ad6" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="jakarta.xml.bind" name="jakarta.xml.bind-api-parent" version="2.3.2">
+ <artifact name="jakarta.xml.bind-api-parent-2.3.2.pom">
+ <sha256 value="15a55b7d537c9f9970aead28d2af97c059f65ff6102f76bbd29f1247dd8a6dfb" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="javax.annotation" name="javax.annotation-api" version="1.3.2">
+ <artifact name="javax.annotation-api-1.3.2.jar">
+ <sha256 value="e04ba5195bcd555dc95650f7cc614d151e4bcd52d29a10b8aa2197f3ab89ab9b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="javax.annotation-api-1.3.2.pom">
+ <sha256 value="46a4a251ca406e78e4853d7a2bae83282844a4992851439ee9a1f23716f06b97" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="javax.inject" name="javax.inject" version="1">
+ <artifact name="javax.inject-1.jar">
+ <sha256 value="91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="javax.inject-1.pom">
+ <sha256 value="943e12b100627804638fa285805a0ab788a680266531e650921ebfe4621a8bfa" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="junit" name="junit" version="4.13.2">
+ <artifact name="junit-4.13.2.jar">
+ <sha256 value="8e495b634469d64fb8acfa3495a065cbacc8a0fff55ce1e31007be4c16dc57d3" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="junit-4.13.2.pom">
+ <sha256 value="569b6977ee4603c965c1c46c3058fa6e969291b0160eb6964dd092cd89eadd94" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="net.java" name="jvnet-parent" version="1">
+ <artifact name="jvnet-parent-1.pom">
+ <sha256 value="281440811268e65d9e266b3cc898297e214e04f09740d0386ceeb4a8923d63bf" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="net.java" name="jvnet-parent" version="3">
+ <artifact name="jvnet-parent-3.pom">
+ <sha256 value="30f5789efa39ddbf96095aada3fc1260c4561faf2f714686717cb2dc5049475a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="net.java.dev.jna" name="jna" version="5.6.0">
+ <artifact name="jna-5.6.0.jar">
+ <sha256 value="5557e235a8aa2f9766d5dc609d67948f2a8832c2d796cea9ef1d6cbe0b3b7eaf" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jna-5.6.0.pom">
+ <sha256 value="5fe81b0255978f24616d37b10608b79498a5f3073e1d9b2038d8736a831f2608" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="net.java.dev.jna" name="jna-platform" version="5.6.0">
+ <artifact name="jna-platform-5.6.0.jar">
+ <sha256 value="9ecea8bf2b1b39963939d18b70464eef60c508fed8820f9dcaba0c35518eabf7" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jna-platform-5.6.0.pom">
+ <sha256 value="1beb35cb4184e6c906a7e32eaebd852dd3da0a263962e99134ab945832394e28" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="net.sf.jopt-simple" name="jopt-simple" version="4.9">
+ <artifact name="jopt-simple-4.9.jar">
+ <sha256 value="26c5856e954b5f864db76f13b86919b59c6eecf9fd930b96baa8884626baf2f5" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jopt-simple-4.9.pom">
+ <sha256 value="7af7e2d8b24b4798f04c2b7da24c9fbd1b7557b4e017c2054481565916079092" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="net.sf.kxml" name="kxml2" version="2.3.0">
+ <artifact name="kxml2-2.3.0.jar">
+ <sha256 value="f264dd9f79a1fde10ce5ecc53221eff24be4c9331c830b7d52f2f08a7b633de2" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kxml2-2.3.0.pom">
+ <sha256 value="31ce606f4e9518936299bb0d27c978fa61e185fd1de7c9874fe959a53e34a685" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache" name="apache" version="13">
+ <artifact name="apache-13.pom">
+ <sha256 value="ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache" name="apache" version="15">
+ <artifact name="apache-15.pom">
+ <sha256 value="36c2f2f979ac67b450c0cb480e4e9baf6b40f3a681f22ba9692287d1139ad494" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache" name="apache" version="18">
+ <artifact name="apache-18.pom">
+ <sha256 value="7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache" name="apache" version="21">
+ <artifact name="apache-21.pom">
+ <sha256 value="af10c108da014f17cafac7b52b2b4b5a3a1c18265fa2af97a325d9143537b380" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache" name="apache" version="23">
+ <artifact name="apache-23.pom">
+ <sha256 value="bc10624e0623f36577fac5639ca2936d3240ed152fb6d8d533ab4d270543491c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache" name="apache" version="31">
+ <artifact name="apache-31.pom">
+ <sha256 value="555d0c9eaa69c042aff924927b9381e8f8174136d355eead445224452e6291cc" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.commons" name="commons-compress" version="1.21">
+ <artifact name="commons-compress-1.21.jar">
+ <sha256 value="6aecfd5459728a595601cfa07258d131972ffc39b492eb48bdd596577a2f244a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="commons-compress-1.21.pom">
+ <sha256 value="675bb023c9beedde3232949979b9742a5fea946280a55a1b462d4ca7801088cd" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.commons" name="commons-parent" version="34">
+ <artifact name="commons-parent-34.pom">
+ <sha256 value="3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.commons" name="commons-parent" version="35">
+ <artifact name="commons-parent-35.pom">
+ <sha256 value="7098a1ab8336ecd4c9dc21cbbcac869f82c66f64b8ac4f7988d41b4fcb44e49a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.commons" name="commons-parent" version="42">
+ <artifact name="commons-parent-42.pom">
+ <sha256 value="cd313494c670b483ec256972af1698b330e598f807002354eb765479f604b09c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.commons" name="commons-parent" version="52">
+ <artifact name="commons-parent-52.pom">
+ <sha256 value="75dbe8f34e98e4c3ff42daae4a2f9eb4cbcd3b5f1047d54460ace906dbb4502e" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.commons" name="commons-parent" version="69">
+ <artifact name="commons-parent-69.pom">
+ <sha256 value="d50da9c39bdca823d618d1b4a03b73f196497fcb8616fd0da727c8623592a9bb" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.httpcomponents" name="httpclient" version="4.5.14">
+ <artifact name="httpclient-4.5.14.jar">
+ <sha256 value="c8bc7e1c51a6d4ce72f40d2ebbabf1c4b68bfe76e732104b04381b493478e9d6" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="httpclient-4.5.14.pom">
+ <sha256 value="f18355af4cf80a8a4ef04ebd742a47e90a7eaf080c725b2095dbc4fc5dbdefb7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.httpcomponents" name="httpclient" version="4.5.6">
+ <artifact name="httpclient-4.5.6.jar">
+ <sha256 value="c03f813195e7a80e3608d0ddd8da80b21696a4c92a6a2298865bf149071551c7" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="httpclient-4.5.6.pom">
+ <sha256 value="7efc1241e73e7fbb268bfd33242d11ebd3ca07061d7d85f2962dc32a0f0b8855" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.httpcomponents" name="httpcomponents-client" version="4.5.14">
+ <artifact name="httpcomponents-client-4.5.14.pom">
+ <sha256 value="5bad1de4f101447659f89d089868ccbad64a68cc503d2d65410b51f6904aa061" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.httpcomponents" name="httpcomponents-client" version="4.5.6">
+ <artifact name="httpcomponents-client-4.5.6.pom">
+ <sha256 value="b042b41f2391edb00d35f7f4e509aed2123648c1d246ce58d0f7b905c9fe1f73" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.httpcomponents" name="httpcomponents-core" version="4.4.16">
+ <artifact name="httpcomponents-core-4.4.16.pom">
+ <sha256 value="f2d75a2c2d423ad18539bf21656d56f88a4091944a662fcaf159d5ae283db7f7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.httpcomponents" name="httpcomponents-parent" version="10">
+ <artifact name="httpcomponents-parent-10.pom">
+ <sha256 value="caaf967d94afb21753f36082c6086206bd1f48825ff596932cceba72b65d39fa" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.httpcomponents" name="httpcomponents-parent" version="11">
+ <artifact name="httpcomponents-parent-11.pom">
+ <sha256 value="a901f87b115c55070c7ee43efff63e20e7b02d30af2443ae292bf1f4e532d3aa" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.httpcomponents" name="httpcore" version="4.4.16">
+ <artifact name="httpcore-4.4.16.jar">
+ <sha256 value="6c9b3dd142a09dc468e23ad39aad6f75a0f2b85125104469f026e52a474e464f" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="httpcore-4.4.16.pom">
+ <sha256 value="3cbad849b35dacfe6cec31adada2c623c026c3261141b0d26eec7e399c6cd7fa" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.apache.httpcomponents" name="httpmime" version="4.5.6">
+ <artifact name="httpmime-4.5.6.jar">
+ <sha256 value="0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="httpmime-4.5.6.pom">
+ <sha256 value="dfbfd6ffe2a784ca9817c46365aa7f8a578320b805bde39d6f55a0b09d8aa8ca" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.bitbucket.b_c" name="jose4j" version="0.9.5">
+ <artifact name="jose4j-0.9.5.jar">
+ <sha256 value="808fb3166f3e67dad9811c331029ab1681242fd52b735bc3f33f281167fcc72e" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jose4j-0.9.5.pom">
+ <sha256 value="bad024180a1b469cbd94e5f2db12841bcac5443d9545607f673cfde677c1d872" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.bouncycastle" name="bcpkix-jdk18on" version="1.79">
+ <artifact name="bcpkix-jdk18on-1.79.jar">
+ <sha256 value="3639a24ddf9ba4b7eba0659b44770e91eba816421888e571f285aadefe532cd6" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="bcpkix-jdk18on-1.79.pom">
+ <sha256 value="35e49f4134de2ac326c3a50a25762cbb4db56f3802fa3f730cc85b653ad0987b" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.bouncycastle" name="bcprov-jdk15to18" version="1.84">
+ <artifact name="bcprov-jdk15to18-1.84.jar">
+ <sha256 value="a30777eebbd44aa1713c14ee04547de1df63ef3e383e910ed210e1d0f2c2ef92" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="bcprov-jdk15to18-1.84.pom">
+ <sha256 value="a38fe20cdd74a5b95071101cd1ac256fc2ddb012b4955911ab64f957efcf4b6f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.bouncycastle" name="bcprov-jdk18on" version="1.79">
+ <artifact name="bcprov-jdk18on-1.79.jar">
+ <sha256 value="0d81ecc3124536b539bce9aa3fe9621b7f84c9cee371b635a5b31c78b79ab1da" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="bcprov-jdk18on-1.79.pom">
+ <sha256 value="d8f1a06b149d746e9d98de54e2f7aa9b2eb613fb35ca67d8ae396ceaac661ee4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.bouncycastle" name="bcutil-jdk18on" version="1.79">
+ <artifact name="bcutil-jdk18on-1.79.jar">
+ <sha256 value="c70b88ada58938cbc2f005d40329054078bcfa1149e6ffc03e9242eb6ab21836" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="bcutil-jdk18on-1.79.pom">
+ <sha256 value="e24c1fb4cf1605405a6988e9e4d6e4b2e1f4393fc73a89a9452ae625ee311d02" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.checkerframework" name="checker-qual" version="2.5.8">
+ <artifact name="checker-qual-2.5.8.pom">
+ <sha256 value="33ac6a0f1341ae96647c7d4465f4aa3d24fe97d2697bcee2ceae6fc8b5ef2c3c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.checkerframework" name="checker-qual" version="3.33.0">
+ <artifact name="checker-qual-3.33.0.jar">
+ <sha256 value="e316255bbfcd9fe50d165314b85abb2b33cb2a66a93c491db648e498a82c2de1" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="checker-qual-3.33.0.module">
+ <sha256 value="e8521d75625d41272c767d262a153ac163cc505b66644a2ef705fa8949ffb4e5" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.checkerframework" name="checker-qual" version="3.43.0">
+ <artifact name="checker-qual-3.43.0.jar">
+ <sha256 value="3fbc2e98f05854c3df16df9abaa955b91b15b3ecac33623208ed6424640ef0f6" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="checker-qual-3.43.0.module">
+ <sha256 value="f8163327245ab8625532948c72a930548cd97f34d6c3fe860fa6aec5a34d79b4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.codehaus.groovy" name="groovy" version="3.0.22">
+ <artifact name="groovy-3.0.22.jar">
+ <sha256 value="c92c92c4b9b183f9981ba7399f36592e5e3ad6f4cdac7101b5a22cc17998d13f" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="groovy-3.0.22.pom">
+ <sha256 value="51b731e5cff121efd6d320f4a801cd616869c5bed4e9c0e353b29060b1d2355f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.codehaus.mojo" name="animal-sniffer-annotations" version="1.23">
+ <artifact name="animal-sniffer-annotations-1.23.jar">
+ <sha256 value="9ffe526bf43a6348e9d8b33b9cd6f580a7f5eed0cf055913007eda263de974d0" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="animal-sniffer-annotations-1.23.pom">
+ <sha256 value="5610db06b733641acbc7a0c48a80c40069db627bad043f8c7c8d7afb4f6a3d27" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.codehaus.mojo" name="animal-sniffer-annotations" version="1.24">
+ <artifact name="animal-sniffer-annotations-1.24.jar">
+ <sha256 value="c720e6e5bcbe6b2f48ded75a47bccdb763eede79d14330102e0d352e3d89ed92" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="animal-sniffer-annotations-1.24.pom">
+ <sha256 value="88484f60a6ad4238a97febacf2b333e9e08c178b8f180a05a3edbff4a38a836e" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.codehaus.mojo" name="animal-sniffer-parent" version="1.23">
+ <artifact name="animal-sniffer-parent-1.23.pom">
+ <sha256 value="6b7f054ab86a87f8e2599f35808b0989922e86b6cab13988021cd12640a4b404" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.codehaus.mojo" name="animal-sniffer-parent" version="1.24">
+ <artifact name="animal-sniffer-parent-1.24.pom">
+ <sha256 value="49ddab43c8361dc2ef0c1ff87cb590fa7231702ab9f62e26d512dc18a1f1cd04" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.codehaus.mojo" name="mojo-parent" version="74">
+ <artifact name="mojo-parent-74.pom">
+ <sha256 value="1472325a16f0b1bdabed21fa4839372964944610294ce2681b2059edc654f2b3" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.codehaus.mojo" name="mojo-parent" version="84">
+ <artifact name="mojo-parent-84.pom">
+ <sha256 value="2fe510618b2f60fcd5f2fb82bc4b2c2c344048d74f30be719fcb86829ee8ac30" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.conscrypt" name="conscrypt-android" version="2.6.1">
+ <artifact name="conscrypt-android-2.6.1.aar">
+ <sha256 value="3d1a7fd58c1c52f46abe580219b6a27355d1343ff07c8f6fd3cd86c9a28cce57" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="conscrypt-android-2.6.1.module">
+ <sha256 value="be7e18493b60d133cd2a7cbbf578cd41b994bacc8c6f736c4ba44ef6036068b1" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.eclipse.ee4j" name="project" version="1.0.2">
+ <artifact name="project-1.0.2.pom">
+ <sha256 value="7495a07a797e88e43c3bc1a87421bd8b1fc55e32291fa18e4e32d8031ddc873f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.eclipse.ee4j" name="project" version="1.0.5">
+ <artifact name="project-1.0.5.pom">
+ <sha256 value="916b4794d8d8220a59a3fdf6a64dbe794aeb23395e888b81ae36a9b5a2c591a6" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.glassfish.jaxb" name="jaxb-bom" version="2.3.2">
+ <artifact name="jaxb-bom-2.3.2.pom">
+ <sha256 value="a1018bb54678ed9f5acb2f7a4084e385ff510201f4e9dbf5f75dc6a675f66be7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.glassfish.jaxb" name="jaxb-runtime" version="2.3.2">
+ <artifact name="jaxb-runtime-2.3.2.jar">
+ <sha256 value="e6e0a1e89fb6ff786279e6a0082d5cef52dc2ebe67053d041800737652b4fd1b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jaxb-runtime-2.3.2.pom">
+ <sha256 value="9448a5ad7fa68a6083dfbe4f42c8c83e082b9202a105401fc68e944c26548b34" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.glassfish.jaxb" name="txw2" version="2.3.2">
+ <artifact name="txw2-2.3.2.jar">
+ <sha256 value="4a6a9f483388d461b81aa9a28c685b8b74c0597993bf1884b04eddbca95f48fe" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="txw2-2.3.2.pom">
+ <sha256 value="a79dd002fb038183ff286a2635be2e68c103b87e0e64717d8d44bfd017fd33ea" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.hamcrest" name="hamcrest-core" version="1.3">
+ <artifact name="hamcrest-core-1.3.jar">
+ <sha256 value="66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="hamcrest-core-1.3.pom">
+ <sha256 value="fde386a7905173a1b103de6ab820727584b50d0e32282e2797787c20a64ffa93" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.hamcrest" name="hamcrest-parent" version="1.3">
+ <artifact name="hamcrest-parent-1.3.pom">
+ <sha256 value="6d535f94efb663bdb682c9f27a50335394688009642ba7a9677504bc1be4129b" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jdom" name="jdom2" version="2.0.6">
+ <artifact name="jdom2-2.0.6.jar">
+ <sha256 value="1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jdom2-2.0.6.pom">
+ <sha256 value="47b23a79fe336b741b82434c6e049d68165256e405e75c10921fd72fa8a65d8d" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains" name="annotations" version="13.0">
+ <artifact name="annotations-13.0.jar">
+ <sha256 value="ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="annotations-13.0.pom">
+ <sha256 value="965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains" name="annotations" version="23.0.0">
+ <artifact name="annotations-23.0.0.jar">
+ <sha256 value="7b0f19724082cbfcbc66e5abea2b9bc92cf08a1ea11e191933ed43801eb3cd05" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="annotations-23.0.0.pom">
+ <sha256 value="c9490f655132328df2cfbcfdf743f53fc3916d6c1d10437175a6ca6e3a67771c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-reflect" version="1.8.21">
+ <artifact name="kotlin-reflect-1.8.21.jar">
+ <sha256 value="8a6cd5a3cf092acee274ce2c444dc36eefdb631579859dd4d857b3309a529c91" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-reflect-1.8.21.pom">
+ <sha256 value="39d78db33222cdbb32b618c7c5223d4457cc19742856d116a85090e4a96f623a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-reflect" version="2.2.0">
+ <artifact name="kotlin-reflect-2.2.0.jar">
+ <sha256 value="230d91c2e410e3cfca3a4dc73d255455f62ff52aac091a33397a6e30bde91bf7" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-reflect-2.2.0.pom">
+ <sha256 value="deed831efcb663e4cf3d5121e5ae796f201e37b813d2c7d607b5f1f8a86fe52e" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="1.8.21">
+ <artifact name="kotlin-stdlib-1.8.21.jar">
+ <sha256 value="042a1cd1ac976cdcfe5eb63f1d8e0b0b892c9248e15a69c8cfba495d546ea52a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-stdlib-1.8.21.pom">
+ <sha256 value="fe0cd9e32193e453333fd2b1f577e662fb5abc6907102bb967817bc131280fd7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="1.9.0">
+ <artifact name="kotlin-stdlib-1.9.0.jar">
+ <sha256 value="35aeffbe2db5aa446072cee50fcee48b7fa9e2fc51ca37c0cc7d7d0bc39d952e" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-stdlib-1.9.0.pom">
+ <sha256 value="37752263f62cc3e3250856e288ee4a73d4102d726a77627034f94806c8c10aca" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="1.9.24">
+ <artifact name="kotlin-stdlib-1.9.24.jar">
+ <sha256 value="858b902696da9cf585ab9d98ffc1c2712269828354dfe9107e3711b084a36468" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-stdlib-1.9.24.module">
+ <sha256 value="f2e2a6573b5b5265c412d5c581fbf8ea00c62b10b9c92d5674c9e97f2f3335b3" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="2.2.0">
+ <artifact name="kotlin-stdlib-2.2.0.jar">
+ <sha256 value="65d12d85a3b865c160db9147851712a64b10dadd68b22eea22a95bf8a8670dca" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-stdlib-2.2.0.module">
+ <sha256 value="a5b98fdcd9db017d542e197225dcee18d658a56de1db2cc41e13196d6b1769a4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="1.8.21">
+ <artifact name="kotlin-stdlib-common-1.8.21.jar">
+ <sha256 value="6a44c9ecc9d7754d9e943fb1e3588c74d4a3f1785be51074f49d6c5723682a73" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-stdlib-common-1.8.21.pom">
+ <sha256 value="e19a5577cbcea89728970db5333c8264c8c69ae722eeb79cbf41d5f0b0c9ae65" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="1.9.0">
+ <artifact name="kotlin-stdlib-common-1.9.0.jar">
+ <sha256 value="283274204bd7c020789ec46f8f8e72af4244d7f550b3392a57e5ca006ad7aa2c" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-stdlib-common-1.9.0.pom">
+ <sha256 value="3660d36a70feb3abe49f11b90633e41d36273576f071b0e109da9b3a0df082a5" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="2.2.0">
+ <artifact name="kotlin-stdlib-common-2.2.0.module">
+ <sha256 value="58fc0d664fc3a67e7e6be9fdbeaedbd212dfa3e527f744f861e792cda72c0e47" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.8.20">
+ <artifact name="kotlin-stdlib-jdk7-1.8.20.jar">
+ <sha256 value="af1ec40c3b951afdcc0c2a0173c7b81763c5281c2d5bafbf0a8544a24c5dcc0c" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-stdlib-jdk7-1.8.20.pom">
+ <sha256 value="3622d106578cddcc0a9ec20f8ce815f7f49ff542f640228d2141fcaf80616b06" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="2.2.0">
+ <artifact name="kotlin-stdlib-jdk7-2.2.0.jar">
+ <sha256 value="0d10bc0d42b8605f23629a3f31ea27c19cdbca9dcdf4f53f6d22cd6366836d18" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-stdlib-jdk7-2.2.0.pom">
+ <sha256 value="95c2189c35ef7bfc48951c32ad70847b21f3809d26f5d0a76e23570879988c30" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.8.20">
+ <artifact name="kotlin-stdlib-jdk8-1.8.20.jar">
+ <sha256 value="e398b67977622718bf18ff99b739c7d9da060f33fb458a2e25203221c16af010" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-stdlib-jdk8-1.8.20.pom">
+ <sha256 value="3a462214a336e995687769531b1e37b0c81d8e10c9949cd5ea7ae1d7803a0232" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="2.2.0">
+ <artifact name="kotlin-stdlib-jdk8-2.2.0.jar">
+ <sha256 value="adc16648dbbcf35b0d10e7ec301c35d746d1c2fe460c606aba59f12b117cf9b0" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlin-stdlib-jdk8-2.2.0.pom">
+ <sha256 value="234d06fdbdc29dcbc07447e28c4a26abab9599d5c3daa3d92a34e6aedea236a6" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="atomicfu" version="0.22.0">
+ <artifact name="atomicfu-0.22.0.module">
+ <sha256 value="5c876ef7e1ee07dd30721c43b46ead8eda23ce2b22260e70f933cbe004e80607" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="atomicfu-jvm" version="0.22.0">
+ <artifact name="atomicfu-jvm-0.22.0.jar">
+ <sha256 value="2da073727f3ab5e5584e74c12e11519c908ae2dfaf6aeb25ded42b6682297882" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="atomicfu-jvm-0.22.0.module">
+ <sha256 value="35070f923ce69f87c6f90e5305720e2704409b69a2374492ac45be70075ee49a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-bom" version="1.7.3">
+ <artifact name="kotlinx-coroutines-bom-1.7.3.pom">
+ <sha256 value="4e5d1900e6379ef3f5970d04a8f30529adc82f859e8cc107c21ce8149ef666c4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-bom" version="1.9.0">
+ <artifact name="kotlinx-coroutines-bom-1.9.0.pom">
+ <sha256 value="bea5511e9001f2c593ab5080df131b219ab5e2085cc5979ce583eacd4946fd78" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core" version="1.6.4">
+ <artifact name="kotlinx-coroutines-core-1.6.4.module">
+ <sha256 value="a6eed4a1835588e7c84fcd7b0475fce9a7b3444c870ebc797b88ba64ccf4576b" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core" version="1.7.3">
+ <artifact name="kotlinx-coroutines-core-1.7.3.module">
+ <sha256 value="7fb162396594ec28e1b6a4411b457949a7670f5e12019176774e1fd6b9471bbf" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core" version="1.9.0">
+ <artifact name="kotlinx-coroutines-core-1.9.0.module">
+ <sha256 value="ad534034a953b4e12cbeeb874c66adf8b1ca14df15fe0d2e6547aa34e86dfeca" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.6.4">
+ <artifact name="kotlinx-coroutines-core-jvm-1.6.4.module">
+ <sha256 value="0d94c8a41483e7c2707ebd693e1b1357a84152998ce85550ebbc54ca4321a3a7" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.7.3">
+ <artifact name="kotlinx-coroutines-core-jvm-1.7.3.jar">
+ <sha256 value="1ab3acc38f3e7355c4f9d1ec62107a46fa73c899f3070d055e5d4373dfe67e12" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlinx-coroutines-core-jvm-1.7.3.module">
+ <sha256 value="34d6ee99b76ac062b51555b4a70be18349fe5566da79a190614f171c80b6538e" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.9.0">
+ <artifact name="kotlinx-coroutines-core-jvm-1.9.0.jar">
+ <sha256 value="ad89c2892235e670f222d819cb3d81188143cb19a05b59df9889ae4269f5c70a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlinx-coroutines-core-jvm-1.9.0.module">
+ <sha256 value="b321a899e40d3ce345707aa2cfda9983ad0dcc69fea74a9b8bf906a16c1cf8a9" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.json" name="json" version="20240303">
+ <artifact name="json-20240303.jar">
+ <sha256 value="3cf6cd6892e32e2b4c1c39e0f52f5248a2f5b37646fdfbb79a66b46b618414ed" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="json-20240303.pom">
+ <sha256 value="994baf5d89bf4caa5ce968e4c4eab135c8f9783ecf4d2b7b0e9d1c8a4ddf1e4f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.junit" name="junit-bom" version="5.10.2">
+ <artifact name="junit-bom-5.10.2.module">
+ <sha256 value="de23b114b3e4119a8fe6eb17bed5a3852816698bace67071579d6d927ebb080a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="junit-bom-5.10.2.pom">
+ <sha256 value="169dd904a4b0f6520cffe658cc62292bfe9f3c14a989fa92120724cde43a9968" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.junit" name="junit-bom" version="5.9.2">
+ <artifact name="junit-bom-5.9.2.pom">
+ <sha256 value="2ed07d65845131f5336a86476c9a4056b59d0b58b9815ab3679bb0f36f35f705" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jvnet.staxex" name="stax-ex" version="1.8.1">
+ <artifact name="stax-ex-1.8.1.jar">
+ <sha256 value="20522549056e9e50aa35ef0b445a2e47a53d06be0b0a9467d704e2483ffb049a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="stax-ex-1.8.1.pom">
+ <sha256 value="8fc84f36ce6da6ce8c893b6538199a7f69a69a0706d9b17a3ee6a3a09452eed6" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.ow2" name="ow2" version="1.5.1">
+ <artifact name="ow2-1.5.1.pom">
+ <sha256 value="321ddbb7ee6fe4f53dea6b4cd6db74154d6bfa42391c1f763b361b9f485acf05" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.ow2.asm" name="asm" version="9.8">
+ <artifact name="asm-9.8.jar">
+ <sha256 value="876eab6a83daecad5ca67eb9fcabb063c97b5aeb8cf1fca7a989ecde17522051" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="asm-9.8.pom">
+ <sha256 value="c1367c3bb383d7619e7f797e38df7513885f2eef04ae7b5908f68222657b5baa" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.ow2.asm" name="asm-analysis" version="9.8">
+ <artifact name="asm-analysis-9.8.jar">
+ <sha256 value="e640732fbcd3c6271925a504f125e38384688f4dfbbf92c8622dfcee0d09edb9" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="asm-analysis-9.8.pom">
+ <sha256 value="c5747e25c72e1b07d5263c75c78ad61a626dd2458fafcafc23f81d3253ee42ed" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.ow2.asm" name="asm-commons" version="9.8">
+ <artifact name="asm-commons-9.8.jar">
+ <sha256 value="3301a1c1cb4c59fcc5292648dac1d7c5aed4c0f067dfbe88873b8cdfe77404f4" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="asm-commons-9.8.pom">
+ <sha256 value="f793e78f01f703717d09472e56cdf212fe298970c882e2116e8e549fb6d140c2" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.ow2.asm" name="asm-tree" version="9.8">
+ <artifact name="asm-tree-9.8.jar">
+ <sha256 value="14b7880cb7c85eed101e2710432fc3ffb83275532a6a894dc4c4095d49ad59f1" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="asm-tree-9.8.pom">
+ <sha256 value="7149e7faa0e191296f879aeed9209c8942d398f0698d2cca1a9c628f2e2a8f77" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.ow2.asm" name="asm-util" version="9.8">
+ <artifact name="asm-util-9.8.jar">
+ <sha256 value="8ba0460ecb28fd0e2980e5f3ef3433a513a457bc077f81a53bdc75b587a08d15" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="asm-util-9.8.pom">
+ <sha256 value="24d0970e171e2917b83a8f0f05d50a1cdb5c82e508555b52dbcc9d3361c4f0ec" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.slf4j" name="slf4j-api" version="1.7.30">
+ <artifact name="slf4j-api-1.7.30.jar">
+ <sha256 value="cdba07964d1bb40a0761485c6b1e8c2f8fd9eb1d19c53928ac0d7f9510105c57" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="slf4j-api-1.7.30.pom">
+ <sha256 value="7e0747751e9b67e19dcb5206f04ea22cc03d250c422426402eadd03513f2c314" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.slf4j" name="slf4j-parent" version="1.7.30">
+ <artifact name="slf4j-parent-1.7.30.pom">
+ <sha256 value="11647956e48a0c5bfb3ac33f6da7e83f341002b6857efd335a505b687be34b75" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.sonatype.oss" name="oss-parent" version="7">
+ <artifact name="oss-parent-7.pom">
+ <sha256 value="b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.sonatype.oss" name="oss-parent" version="9">
+ <artifact name="oss-parent-9.pom">
+ <sha256 value="fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.tensorflow" name="tensorflow-lite-metadata" version="0.2.0">
+ <artifact name="tensorflow-lite-metadata-0.2.0.jar">
+ <sha256 value="e9f18b8a41f017e9033cb0ed85c8a2ba2307292cdfe25eae365923e7a31d2a70" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="tensorflow-lite-metadata-0.2.0.pom">
+ <sha256 value="0fe31326e83b7622cbcd9c75d467b291f01ffe3cc6e3e76651ac05a1c1c7a360" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ </components>
+</verification-metadata>
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 2c35211..9bbc975 100644
--- a/gradle/wrapper/gradle-wrapper.jar
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.jar.sha256 b/gradle/wrapper/gradle-wrapper.jar.sha256
index d824e33..82ecb98 100644
--- a/gradle/wrapper/gradle-wrapper.jar.sha256
+++ b/gradle/wrapper/gradle-wrapper.jar.sha256
@@ -1 +1 @@
-498495120a03b9a6ab5d155f5de3c8f0d986a449153702fb80fc80e134484f17 gradle-wrapper.jar
+81a82aaea5abcc8ff68b3dfcb58b3c3c429378efd98e7433460610fecd7ae45f gradle-wrapper.jar
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 77f5d0b..36e4933 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
-distributionSha256Sum=d725d707bfabd4dfdc958c624003b3c80accc03f7037b5122c4b1d0ef15cecab
+distributionSha256Sum=20f1b1176237254a6fc204d8434196fa11a4cfb387567519c61556e8710aed78
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index 97de990..faf9300 100755
--- a/gradlew
+++ b/gradlew
@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+# SPDX-License-Identifier: Apache-2.0
+#
##############################################################################
#
@@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -84,7 +86,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
-APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -200,10 +202,10 @@ fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='-Dfile.encoding=UTF-8 "-Xmx64m" "-Xms64m"'
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
-# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
diff --git a/scripts/build-apk b/scripts/build-apk
index 476731b..3040ee0 100755
--- a/scripts/build-apk
+++ b/scripts/build-apk
@@ -8,7 +8,7 @@
# KEY_PASS password for that key (often the same as KEYSTORE_PASS)
#
# Required tooling:
-# Android build-tools 35.0.0 apksigner under ANDROID_SDK_ROOT or on PATH.
+# Android build-tools 35.0.0 under ANDROID_SDK_ROOT or on PATH.
#
# Usage:
# scripts/build-apk
@@ -25,11 +25,10 @@ set -eu
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
APK="$ROOT/app/build/outputs/apk/release/app-release.apk"
-JAR="$ROOT/app/src/main/assets/scrcpy-server.jar"
require() {
name="$1"
- eval "val=\${$name:-}"
+ val="$2"
if [ -z "$val" ]; then
echo "build-apk: \$$name is not set" >&2
echo " see the header of $0 for the required environment" >&2
@@ -37,10 +36,10 @@ require() {
fi
}
-require KEYSTORE_PATH
-require KEYSTORE_PASS
-require KEY_ALIAS
-require KEY_PASS
+require KEYSTORE_PATH "${KEYSTORE_PATH:-}"
+require KEYSTORE_PASS "${KEYSTORE_PASS:-}"
+require KEY_ALIAS "${KEY_ALIAS:-}"
+require KEY_PASS "${KEY_PASS:-}"
if [ ! -f "$KEYSTORE_PATH" ]; then
echo "build-apk: keystore not found at $KEYSTORE_PATH" >&2
@@ -62,23 +61,79 @@ fi
SUM=$(sha256sum "$APK" | awk '{print $1}')
APKSIGNER=""
-if [ -n "${ANDROID_SDK_ROOT:-}" ]; then
- APKSIGNER="$ANDROID_SDK_ROOT/build-tools/35.0.0/apksigner"
- if [ ! -x "$APKSIGNER" ]; then
- APKSIGNER=""
- fi
+AAPT2=""
+ZIPALIGN=""
+SDK_ROOT="${ANDROID_SDK_ROOT:-${ANDROID_HOME:-}}"
+if [ -n "$SDK_ROOT" ]; then
+ APKSIGNER="$SDK_ROOT/build-tools/35.0.0/apksigner"
+ AAPT2="$SDK_ROOT/build-tools/35.0.0/aapt2"
+ ZIPALIGN="$SDK_ROOT/build-tools/35.0.0/zipalign"
+ [ -x "$APKSIGNER" ] || APKSIGNER=""
+ [ -x "$AAPT2" ] || AAPT2=""
+ [ -x "$ZIPALIGN" ] || ZIPALIGN=""
fi
if [ -z "$APKSIGNER" ] && command -v apksigner >/dev/null 2>&1; then
APKSIGNER=$(command -v apksigner)
fi
-if [ -z "$APKSIGNER" ]; then
- echo "build-apk: apksigner 35.0.0 is required" >&2
- echo " set ANDROID_SDK_ROOT or put apksigner on PATH" >&2
+if [ -z "$AAPT2" ] && command -v aapt2 >/dev/null 2>&1; then
+ AAPT2=$(command -v aapt2)
+fi
+if [ -z "$ZIPALIGN" ] && command -v zipalign >/dev/null 2>&1; then
+ ZIPALIGN=$(command -v zipalign)
+fi
+if [ -z "$APKSIGNER" ] || [ -z "$AAPT2" ] || [ -z "$ZIPALIGN" ]; then
+ echo "build-apk: build-tools 35.0.0 are required" >&2
+ echo " set ANDROID_SDK_ROOT or put apksigner, aapt2, and zipalign on PATH" >&2
exit 1
fi
+# Capture rather than pipe: POSIX sh has no pipefail, so
+# `apksigner verify | sed` reports sed's status and a rejected APK would
+# sail past set -e and be announced below as if it were signed.
echo "build-apk: apksigner verify"
-"$APKSIGNER" verify --verbose --print-certs "$APK" | sed 's/^/ /'
+if ! verify_out=$("$APKSIGNER" verify --verbose --print-certs "$APK" 2>&1); then
+ printf '%s\n' "$verify_out" >&2
+ echo "build-apk: apksigner rejected $APK" >&2
+ exit 1
+fi
+printf '%s\n' "$verify_out" | sed 's/^/ /'
+
+"$ZIPALIGN" -c -P 16 4 "$APK"
+
+expected_permissions=$(cat <<EOF
+package: invalid.lena.scrcpy
+uses-permission: name='android.permission.INTERNET'
+uses-permission: name='android.permission.FOREGROUND_SERVICE'
+uses-permission: name='android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK'
+uses-permission: name='android.permission.POST_NOTIFICATIONS'
+EOF
+)
+actual_permissions=$("$AAPT2" dump permissions "$APK")
+if [ "$actual_permissions" != "$expected_permissions" ]; then
+ echo "build-apk: unexpected release permissions:" >&2
+ printf '%s\n' "$actual_permissions" >&2
+ exit 1
+fi
+
+expected_sdk=$(cat <<EOF
+minSdkVersion:'31'
+targetSdkVersion:'36'
+EOF
+)
+actual_sdk=$("$AAPT2" dump badging "$APK" \
+ | sed -n '/^minSdkVersion:/p; /^targetSdkVersion:/p')
+if [ "$actual_sdk" != "$expected_sdk" ]; then
+ echo "build-apk: unexpected release SDK levels:" >&2
+ printf '%s\n' "$actual_sdk" >&2
+ exit 1
+fi
+
+expected_abis="native-code: 'arm64-v8a' 'x86_64'"
+actual_abis=$("$AAPT2" dump badging "$APK" | sed -n '/^native-code:/p')
+if [ "$actual_abis" != "$expected_abis" ]; then
+ echo "build-apk: unexpected release ABIs: $actual_abis" >&2
+ exit 1
+fi
echo "build-apk: $APK"
echo "build-apk: sha256 $SUM"
diff --git a/scripts/build-server b/scripts/build-server
new file mode 100755
index 0000000..ddd814f
--- /dev/null
+++ b/scripts/build-server
@@ -0,0 +1,34 @@
+#!/bin/sh
+# Build the pinned scrcpy server source.
+
+set -eu
+
+ROOT="$(cd "$(dirname "$0")/.." && pwd)"
+SCRCPY="$ROOT/vendor/scrcpy"
+VERSION_FILE="$ROOT/app/src/main/assets/scrcpy-server.version"
+BUILD_FILE="$SCRCPY/server/build.gradle"
+OUTPUT="$SCRCPY/server/build/outputs/apk/release/server-release-unsigned.apk"
+
+if [ ! -s "$BUILD_FILE" ]; then
+ echo "build-server: vendor/scrcpy is not initialized" >&2
+ exit 1
+fi
+if [ ! -s "$VERSION_FILE" ]; then
+ echo "build-server: missing $VERSION_FILE" >&2
+ exit 1
+fi
+
+expected=$(cat "$VERSION_FILE")
+declared=$(sed -n 's/.*versionName[ =]*"\([^"]*\)".*/\1/p' "$BUILD_FILE")
+if [ -z "$declared" ] || [ "$declared" != "$expected" ]; then
+ echo "build-server: source version '$declared', asset version '$expected'" >&2
+ exit 1
+fi
+
+echo "build-server: scrcpy $expected" >&2
+"$SCRCPY/gradlew" -p "$SCRCPY" --no-daemon :server:assembleRelease >&2
+if [ ! -s "$OUTPUT" ]; then
+ echo "build-server: Gradle did not produce $OUTPUT" >&2
+ exit 1
+fi
+printf '%s\n' "$OUTPUT"
diff --git a/scripts/check b/scripts/check
index 6886411..8196859 100755
--- a/scripts/check
+++ b/scripts/check
@@ -7,4 +7,6 @@ ROOT="$(cd "$(dirname "$0")/.." && pwd)"
"$ROOT/scripts/check-wrapper"
"$ROOT/scripts/check-server"
+cd "$ROOT"
"$ROOT/gradlew" --no-daemon :app:test :adb:test :app:lint
+"$ROOT/scripts/check-server-source"
diff --git a/scripts/check-server b/scripts/check-server
index 9a895a1..6b773a5 100755
--- a/scripts/check-server
+++ b/scripts/check-server
@@ -16,7 +16,7 @@ for file in "$JAR" "$SUM" "$VERSION"; do
fi
done
-expected=$(awk 'NR == 1 { print $1 }' "$SUM")
+expected=$(cat "$SUM")
case "$expected" in
*[!0-9a-f]*|'')
echo "check-server: invalid SHA-256 in $SUM" >&2
@@ -36,4 +36,12 @@ if [ "$actual" != "$expected" ]; then
exit 1
fi
-echo "check-server: ok ($(cat "$VERSION"))"
+if ! awk 'BEGIN { ok = 0 }
+ /^[0-9]+([.][0-9]+)*$/ { if (NR == 1) ok = 1; next }
+ { ok = 0 }
+ END { exit !(ok && NR == 1) }' "$VERSION"; then
+ echo "check-server: invalid version in $VERSION" >&2
+ exit 1
+fi
+version=$(cat "$VERSION")
+echo "check-server: ok ($version)"
diff --git a/scripts/check-server-source b/scripts/check-server-source
new file mode 100755
index 0000000..47d161a
--- /dev/null
+++ b/scripts/check-server-source
@@ -0,0 +1,27 @@
+#!/bin/sh
+# Build and test the pinned scrcpy server, then compare its executable dex
+# with the bundled upstream release.
+
+set -eu
+
+ROOT="$(cd "$(dirname "$0")/.." && pwd)"
+SCRCPY="$ROOT/vendor/scrcpy"
+OFFICIAL="$ROOT/app/src/main/assets/scrcpy-server.jar"
+
+"$ROOT/scripts/check-server"
+built=$("$ROOT/scripts/build-server")
+
+echo "check-server-source: unit, lint, checkstyle" >&2
+"$SCRCPY/gradlew" -p "$SCRCPY" --no-daemon \
+ :server:testDebugUnitTest :server:lint :server:checkstyle >&2
+
+tmp=$(mktemp -d)
+trap 'rm -rf "$tmp"' EXIT INT TERM
+unzip -p "$OFFICIAL" classes.dex >"$tmp/official.dex"
+unzip -p "$built" classes.dex >"$tmp/source.dex"
+if ! cmp -s "$tmp/official.dex" "$tmp/source.dex"; then
+ echo "check-server-source: source dex differs from upstream release" >&2
+ sha256sum "$tmp/official.dex" "$tmp/source.dex" >&2
+ exit 1
+fi
+echo "check-server-source: ok"
diff --git a/scripts/check-wrapper b/scripts/check-wrapper
index 3997bed..c56b935 100755
--- a/scripts/check-wrapper
+++ b/scripts/check-wrapper
@@ -18,7 +18,25 @@ if [ ! -f "$EXPECTED_FILE" ]; then
exit 1
fi
-# sha256sum reads its first column from the .sha256 sidecar; the second
-# column ('gradle-wrapper.jar') is informational.
-( cd "$(dirname "$WRAPPER")" && sha256sum -c "$(basename "$EXPECTED_FILE")" >/dev/null )
+line=$(cat "$EXPECTED_FILE")
+expected=${line% gradle-wrapper.jar}
+if [ "$line" != "$expected gradle-wrapper.jar" ]; then
+ echo "check-wrapper: malformed $EXPECTED_FILE" >&2
+ exit 1
+fi
+case "$expected" in
+ *[!0-9a-f]*|'')
+ echo "check-wrapper: invalid SHA-256 in $EXPECTED_FILE" >&2
+ exit 1
+ ;;
+esac
+if [ "${#expected}" -ne 64 ]; then
+ echo "check-wrapper: invalid SHA-256 length in $EXPECTED_FILE" >&2
+ exit 1
+fi
+actual=$(sha256sum "$WRAPPER" | awk '{ print $1 }')
+if [ "$actual" != "$expected" ]; then
+ echo "check-wrapper: gradle-wrapper.jar checksum mismatch" >&2
+ exit 1
+fi
echo "check-wrapper: ok"
diff --git a/scripts/update-server b/scripts/update-server
index df12e3a..337ef67 100755
--- a/scripts/update-server
+++ b/scripts/update-server
@@ -4,7 +4,7 @@
#
# Usage:
# scripts/update-server # use DEFAULT_VERSION below
-# scripts/update-server 4.0 # use explicit version
+# scripts/update-server 4.1 # use explicit version
#
# Bumping to a new release:
# 1. Run with the new version. The script will print the observed SHA-256
@@ -15,16 +15,22 @@
set -eu
-DEFAULT_VERSION='4.0'
+DEFAULT_VERSION='4.1'
VERSION="${1:-$DEFAULT_VERSION}"
-ROOT="$(git rev-parse --show-toplevel)"
+if ! printf '%s\n' "$VERSION" \
+ | awk '/^[0-9]+([.][0-9]+)*$/ { ok = 1 } END { exit !ok }'; then
+ echo "update-server: invalid version: $VERSION" >&2
+ exit 2
+fi
+
+ROOT="$(cd "$(dirname "$0")/.." && pwd)"
ASSETS="$ROOT/app/src/main/assets"
URL="https://github.com/Genymobile/scrcpy/releases/download/v$VERSION/scrcpy-server-v$VERSION"
# Known-good SHA-256 sums. Keep one line per blessed version.
EXPECTED=$(cat <<EOF
-4.0 84924bd564a1eb6089c872c7521f968058977f91f5ff02514a8c74aff3210f3a
+4.1 deacb991ed2509715160ffdc7907e47b4160eb30d1566217e9047fd5b8850cae
EOF
)
@@ -35,6 +41,14 @@ if [ -z "$want" ]; then
echo " $VERSION <sha256-of-the-downloaded-binary>" >&2
fi
+if [ -f "$ASSETS/scrcpy-server.jar" ] \
+ && [ "$(cat "$ASSETS/scrcpy-server.version" 2>/dev/null || true)" = "$VERSION" ] \
+ && [ "$(sha256sum "$ASSETS/scrcpy-server.jar" | awk '{print $1}')" = "$want" ]; then
+ printf '%s\n' "$want" >"$ASSETS/scrcpy-server.sha256"
+ echo "update-server: already installed $ASSETS/scrcpy-server.jar v$VERSION"
+ exit 0
+fi
+
mkdir -p "$ASSETS"
tmp=$(mktemp)
trap 'rm -f "$tmp"' EXIT
diff --git a/settings.gradle b/settings.gradle
index 060839b..0d847c7 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -15,7 +15,7 @@ dependencyResolutionManagement {
// allow it to shadow artifacts available from the primary repos.
exclusiveContent {
forRepository {
- maven { url 'https://jitpack.io' }
+ maven { url = uri('https://jitpack.io') }
}
filter {
includeModule 'com.github.MuntashirAkon.spake2-java', 'spake2-android'
diff --git a/vendor/scrcpy b/vendor/scrcpy
-Subproject 2322868e9e256eb5fce0b3d659ab2a409f29bae
+Subproject 2926c06c5dc3064ae6d8db706f1a98a37cfcf3f