summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2024-02-05 17:52:40 +0100
committerAlbin <albin@mullvad.net>2024-02-05 17:52:40 +0100
commitd805c6e12522f3b5adaaac21626beae4ab8021d7 (patch)
treef74203cf70bf23b59768d710749e8a400d8c667d /android
parent8bdc0e8dcc52bf82c3e39903257d1b430dc6c2b9 (diff)
parentf7cb264dbfbc0356bc4426d17ce6eb045c122d81 (diff)
downloadmullvadvpn-d805c6e12522f3b5adaaac21626beae4ab8021d7.tar.xz
mullvadvpn-d805c6e12522f3b5adaaac21626beae4ab8021d7.zip
Merge branch 'try-replacing-ktfmt-with-detekt-droid-559'
Diffstat (limited to 'android')
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/RedeemVoucherDialogTest.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt7
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/PackageManagerExtensions.kt10
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt3
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionDeviceDataSourceTest.kt3
-rw-r--r--android/build.gradle.kts25
-rw-r--r--android/buildSrc/src/main/kotlin/Dependencies.kt1
-rw-r--r--android/buildSrc/src/main/kotlin/Extensions.kt4
-rw-r--r--android/buildSrc/src/main/kotlin/Versions.kt1
-rw-r--r--android/config/baseline.xml616
-rw-r--r--android/config/detekt.yml910
-rw-r--r--android/gradle/verification-metadata.xml280
-rw-r--r--android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepository.kt31
-rw-r--r--android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/CommonStringExtensions.kt4
-rw-r--r--android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlow.kt15
-rw-r--r--android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt2
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt14
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt2
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt6
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt4
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt2
-rw-r--r--android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt2
23 files changed, 1894 insertions, 51 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/RedeemVoucherDialogTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/RedeemVoucherDialogTest.kt
index 9a2a9ce86d..44338c3989 100644
--- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/RedeemVoucherDialogTest.kt
+++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/RedeemVoucherDialogTest.kt
@@ -149,7 +149,6 @@ class RedeemVoucherDialogTest {
}
companion object {
- private const val REDEEM_BUTTON_TEXT = "Redeem"
private const val CANCEL_BUTTON_TEXT = "Cancel"
private const val GOT_IT_BUTTON_TEXT = "Got it!"
private const val DUMMY_VOUCHER = "DUMMY____VOUCHER"
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt
index adccf231a3..6ad5675a43 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SplitTunnelingCell.kt
@@ -8,7 +8,12 @@ import androidx.compose.foundation.layout.size
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
-import androidx.compose.runtime.*
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt
index 39cee0342a..843c7c2930 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt
@@ -1,3 +1,5 @@
+@file:Suppress("MagicNumber")
+
package net.mullvad.mullvadvpn.util
import kotlinx.coroutines.Deferred
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/PackageManagerExtensions.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/PackageManagerExtensions.kt
index ea8ce1f4e1..c5bf7965ca 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/PackageManagerExtensions.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/PackageManagerExtensions.kt
@@ -7,12 +7,10 @@ import androidx.core.graphics.drawable.toBitmapOrNull
fun PackageManager.getApplicationIconBitmapOrNull(packageName: String): Bitmap? =
try {
getApplicationIcon(packageName).toBitmapOrNull()
- } catch (e: Exception) {
+ } catch (e: PackageManager.NameNotFoundException) {
// Name not found is thrown if the application is not installed
+ null
+ } catch (e: IllegalArgumentException) {
// IllegalArgumentException is thrown if the application has an invalid icon
- when (e) {
- is PackageManager.NameNotFoundException,
- is IllegalArgumentException -> null
- else -> throw e
- }
+ null
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt
index 7a7332eb2a..3e88ccc28a 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt
@@ -5,6 +5,7 @@ import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import java.net.InetAddress
+import java.net.UnknownHostException
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.channels.BufferOverflow
@@ -223,7 +224,7 @@ class VpnSettingsViewModel(
private fun List<String>.asInetAddressList(): List<InetAddress> {
return try {
map { InetAddress.getByName(it) }
- } catch (ex: Exception) {
+ } catch (ex: UnknownHostException) {
Log.e("mullvad", "Error parsing the DNS address list.")
emptyList()
}
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionDeviceDataSourceTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionDeviceDataSourceTest.kt
index d4fd349438..8f17f37bbd 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionDeviceDataSourceTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnectionDeviceDataSourceTest.kt
@@ -13,7 +13,6 @@ import io.mockk.mockkObject
import io.mockk.mockkStatic
import io.mockk.unmockkAll
import kotlin.reflect.KClass
-import net.mullvad.mullvadvpn.lib.common.util.JobTracker
import net.mullvad.mullvadvpn.lib.ipc.Event
import net.mullvad.mullvadvpn.lib.ipc.EventDispatcher
import net.mullvad.mullvadvpn.lib.ipc.Request
@@ -22,8 +21,6 @@ import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
class ServiceConnectionDeviceDataSourceTest {
- private val tracker = JobTracker()
-
@MockK private lateinit var mockedMainLooper: Looper
@MockK private lateinit var mockedDispatchingHandler: EventDispatcher
diff --git a/android/build.gradle.kts b/android/build.gradle.kts
index 8f801b85a7..46573d80c2 100644
--- a/android/build.gradle.kts
+++ b/android/build.gradle.kts
@@ -1,9 +1,11 @@
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
+import io.gitlab.arturbosch.detekt.Detekt
plugins {
id(Dependencies.Plugin.dependencyCheckId) version Versions.Plugin.dependencyCheck apply false
id(Dependencies.Plugin.gradleVersionsId) version Versions.Plugin.gradleVersions
id(Dependencies.Plugin.ktfmtId) version Versions.Plugin.ktfmt apply false
+ id(Dependencies.Plugin.detektId) version Versions.Plugin.detekt
}
buildscript {
@@ -11,6 +13,7 @@ buildscript {
google()
mavenCentral()
maven(Repositories.GradlePlugins)
+ gradlePluginPortal()
}
dependencies {
@@ -27,6 +30,28 @@ buildscript {
}
}
+val baselineFile = file("$rootDir/config/baseline.xml")
+val configFile = files("$rootDir/config/detekt.yml")
+
+val projectSource = file(projectDir)
+val buildFiles = "**/build/**"
+
+detekt {
+ buildUponDefaultConfig = true
+ allRules = false
+ config.setFrom(configFile)
+ source.setFrom(projectSource)
+ baseline = baselineFile
+ parallel = true
+ ignoreFailures = false
+ autoCorrect = true
+}
+
+tasks.withType<Detekt>().configureEach {
+ // Ignore generated files from the build directory, e.g files created by ksp.
+ exclude(buildFiles)
+}
+
allprojects {
apply(plugin = Dependencies.Plugin.dependencyCheckId)
apply(plugin = Dependencies.Plugin.ktfmtId)
diff --git a/android/buildSrc/src/main/kotlin/Dependencies.kt b/android/buildSrc/src/main/kotlin/Dependencies.kt
index 9893cadc16..055bf72d12 100644
--- a/android/buildSrc/src/main/kotlin/Dependencies.kt
+++ b/android/buildSrc/src/main/kotlin/Dependencies.kt
@@ -116,6 +116,7 @@ object Dependencies {
const val dependencyCheck =
"org.owasp:dependency-check-gradle:${Versions.Plugin.dependencyCheck}"
const val dependencyCheckId = "org.owasp.dependencycheck"
+ const val detektId = "io.gitlab.arturbosch.detekt"
const val gradleVersionsId = "com.github.ben-manes.versions"
const val junit5 = "de.mannodermaus.android-junit5"
const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
diff --git a/android/buildSrc/src/main/kotlin/Extensions.kt b/android/buildSrc/src/main/kotlin/Extensions.kt
index 0115aa9f30..b81a40537b 100644
--- a/android/buildSrc/src/main/kotlin/Extensions.kt
+++ b/android/buildSrc/src/main/kotlin/Extensions.kt
@@ -11,8 +11,8 @@ fun String.isNonStableVersion(): Boolean {
return isNonStable
}
-fun DependencyHandler.`leakCanaryImplementation`(dependencyNotation: Any): Dependency? =
+fun DependencyHandler.leakCanaryImplementation(dependencyNotation: Any): Dependency? =
add("leakCanaryImplementation", dependencyNotation)
-fun DependencyHandler.`playImplementation`(dependencyNotation: Any): Dependency? =
+fun DependencyHandler.playImplementation(dependencyNotation: Any): Dependency? =
add("playImplementation", dependencyNotation)
diff --git a/android/buildSrc/src/main/kotlin/Versions.kt b/android/buildSrc/src/main/kotlin/Versions.kt
index 58aa769cb7..3c2470b2d0 100644
--- a/android/buildSrc/src/main/kotlin/Versions.kt
+++ b/android/buildSrc/src/main/kotlin/Versions.kt
@@ -50,6 +50,7 @@ object Versions {
const val androidAapt = "$android-10154469"
const val playPublisher = "3.8.4"
const val dependencyCheck = "8.3.1"
+ const val detekt = "1.23.4"
const val gradleVersions = "0.47.0"
const val junit5 = "1.10.0.0"
const val ktfmt = "0.16.0"
diff --git a/android/config/baseline.xml b/android/config/baseline.xml
new file mode 100644
index 0000000000..cccc81b703
--- /dev/null
+++ b/android/config/baseline.xml
@@ -0,0 +1,616 @@
+<?xml version="1.0" ?>
+<SmellBaseline>
+ <ManuallySuppressedIssues></ManuallySuppressedIssues>
+ <CurrentIssues>
+ <ID>ComplexCondition:TunnelStateNotification.kt$TunnelStateNotification$context.isNotificationPermissionMissing().not() &amp;&amp; visible &amp;&amp; (!reconnecting || !showingReconnecting)</ID>
+ <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.BridgesKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Bridges.Builder</ID>
+ <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.DirectKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Direct.Builder</ID>
+ <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Builder</ID>
+ <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.ShadowsocksKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Shadowsocks.Builder</ID>
+ <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.Socks5LocalKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Local.Builder</ID>
+ <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.Socks5RemoteKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Remote.Builder</ID>
+ <ID>ConstructorParameterNaming:AccessMethodKt.kt$AccessMethodKt.SocksAuthKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.SocksAuth.Builder</ID>
+ <ID>ConstructorParameterNaming:AccessMethodSettingKt.kt$AccessMethodSettingKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethodSetting.Builder</ID>
+ <ID>ConstructorParameterNaming:AccountAndDevice.kt$AccountAndDevice$val account_token: String</ID>
+ <ID>ConstructorParameterNaming:AccountAndDeviceKt.kt$AccountAndDeviceKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccountAndDevice.Builder</ID>
+ <ID>ConstructorParameterNaming:AccountDataKt.kt$AccountDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccountData.Builder</ID>
+ <ID>ConstructorParameterNaming:AccountHistoryKt.kt$AccountHistoryKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccountHistory.Builder</ID>
+ <ID>ConstructorParameterNaming:ApiAccessMethodSettingsKt.kt$ApiAccessMethodSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ApiAccessMethodSettings.Builder</ID>
+ <ID>ConstructorParameterNaming:ApiAddressesKt.kt$ApiAddressesKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ApiAddresses.Builder</ID>
+ <ID>ConstructorParameterNaming:AppVersionInfoKt.kt$AppVersionInfoKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AppVersionInfo.Builder</ID>
+ <ID>ConstructorParameterNaming:BridgeEndpointDataKt.kt$BridgeEndpointDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeEndpointData.Builder</ID>
+ <ID>ConstructorParameterNaming:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.BridgeConstraints.Builder</ID>
+ <ID>ConstructorParameterNaming:BridgeSettingsKt.kt$BridgeSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.Builder</ID>
+ <ID>ConstructorParameterNaming:BridgeSettingsKt.kt$BridgeSettingsKt.LocalProxySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.LocalProxySettings.Builder</ID>
+ <ID>ConstructorParameterNaming:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxyAuthKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxyAuth.Builder</ID>
+ <ID>ConstructorParameterNaming:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxySettings.Builder</ID>
+ <ID>ConstructorParameterNaming:BridgeSettingsKt.kt$BridgeSettingsKt.ShadowsocksProxySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.ShadowsocksProxySettings.Builder</ID>
+ <ID>ConstructorParameterNaming:BridgeStateKt.kt$BridgeStateKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeState.Builder</ID>
+ <ID>ConstructorParameterNaming:ConnectionConfigKt.kt$ConnectionConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.Builder</ID>
+ <ID>ConstructorParameterNaming:ConnectionConfigKt.kt$ConnectionConfigKt.OpenvpnConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.OpenvpnConfig.Builder</ID>
+ <ID>ConstructorParameterNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.Builder</ID>
+ <ID>ConstructorParameterNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.PeerConfig.Builder</ID>
+ <ID>ConstructorParameterNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.TunnelConfig.Builder</ID>
+ <ID>ConstructorParameterNaming:CustomDnsOptionsKt.kt$CustomDnsOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.CustomDnsOptions.Builder</ID>
+ <ID>ConstructorParameterNaming:CustomListKt.kt$CustomListKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.CustomList.Builder</ID>
+ <ID>ConstructorParameterNaming:CustomListSettingsKt.kt$CustomListSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.CustomListSettings.Builder</ID>
+ <ID>ConstructorParameterNaming:CustomRelaySettingsKt.kt$CustomRelaySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.CustomRelaySettings.Builder</ID>
+ <ID>ConstructorParameterNaming:DaemonEventKt.kt$DaemonEventKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DaemonEvent.Builder</ID>
+ <ID>ConstructorParameterNaming:DefaultDnsOptionsKt.kt$DefaultDnsOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DefaultDnsOptions.Builder</ID>
+ <ID>ConstructorParameterNaming:DeviceEventKt.kt$DeviceEventKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DeviceEvent.Builder</ID>
+ <ID>ConstructorParameterNaming:DeviceKt.kt$DeviceKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Device.Builder</ID>
+ <ID>ConstructorParameterNaming:DeviceListKt.kt$DeviceListKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DeviceList.Builder</ID>
+ <ID>ConstructorParameterNaming:DeviceRemovalKt.kt$DeviceRemovalKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DeviceRemoval.Builder</ID>
+ <ID>ConstructorParameterNaming:DeviceStateKt.kt$DeviceStateKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DeviceState.Builder</ID>
+ <ID>ConstructorParameterNaming:DnsOptionsKt.kt$DnsOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.DnsOptions.Builder</ID>
+ <ID>ConstructorParameterNaming:EndpointKt.kt$EndpointKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Endpoint.Builder</ID>
+ <ID>ConstructorParameterNaming:ErrorStateKt.kt$ErrorStateKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ErrorState.Builder</ID>
+ <ID>ConstructorParameterNaming:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ErrorState.FirewallPolicyError.Builder</ID>
+ <ID>ConstructorParameterNaming:ExcludedProcessKt.kt$ExcludedProcessKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ExcludedProcess.Builder</ID>
+ <ID>ConstructorParameterNaming:ExcludedProcessListKt.kt$ExcludedProcessListKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ExcludedProcessList.Builder</ID>
+ <ID>ConstructorParameterNaming:GeoIpLocationKt.kt$GeoIpLocationKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.GeoIpLocation.Builder</ID>
+ <ID>ConstructorParameterNaming:GeographicLocationConstraintKt.kt$GeographicLocationConstraintKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.GeographicLocationConstraint.Builder</ID>
+ <ID>ConstructorParameterNaming:LocationConstraintKt.kt$LocationConstraintKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.LocationConstraint.Builder</ID>
+ <ID>ConstructorParameterNaming:LocationKt.kt$LocationKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Location.Builder</ID>
+ <ID>ConstructorParameterNaming:NewAccessMethodSettingKt.kt$NewAccessMethodSettingKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.NewAccessMethodSetting.Builder</ID>
+ <ID>ConstructorParameterNaming:NormalRelaySettingsKt.kt$NormalRelaySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.NormalRelaySettings.Builder</ID>
+ <ID>ConstructorParameterNaming:ObfuscationEndpointKt.kt$ObfuscationEndpointKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ObfuscationEndpoint.Builder</ID>
+ <ID>ConstructorParameterNaming:ObfuscationSettingsKt.kt$ObfuscationSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ObfuscationSettings.Builder</ID>
+ <ID>ConstructorParameterNaming:OpenVpnEndpointDataKt.kt$OpenVpnEndpointDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpointData.Builder</ID>
+ <ID>ConstructorParameterNaming:OpenVpnEndpointKt.kt$OpenVpnEndpointKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpoint.Builder</ID>
+ <ID>ConstructorParameterNaming:OpenvpnConstraintsKt.kt$OpenvpnConstraintsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.OpenvpnConstraints.Builder</ID>
+ <ID>ConstructorParameterNaming:PortRangeKt.kt$PortRangeKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.PortRange.Builder</ID>
+ <ID>ConstructorParameterNaming:ProxyEndpointKt.kt$ProxyEndpointKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ProxyEndpoint.Builder</ID>
+ <ID>ConstructorParameterNaming:PublicKeyKt.kt$PublicKeyKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.PublicKey.Builder</ID>
+ <ID>ConstructorParameterNaming:QuantumResistantStateKt.kt$QuantumResistantStateKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.QuantumResistantState.Builder</ID>
+ <ID>ConstructorParameterNaming:RelayKt.kt$RelayKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Relay.Builder</ID>
+ <ID>ConstructorParameterNaming:RelayListCityKt.kt$RelayListCityKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.RelayListCity.Builder</ID>
+ <ID>ConstructorParameterNaming:RelayListCountryKt.kt$RelayListCountryKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.RelayListCountry.Builder</ID>
+ <ID>ConstructorParameterNaming:RelayListKt.kt$RelayListKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.RelayList.Builder</ID>
+ <ID>ConstructorParameterNaming:RelaySettingsKt.kt$RelaySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.RelaySettings.Builder</ID>
+ <ID>ConstructorParameterNaming:RemoveDeviceEventKt.kt$RemoveDeviceEventKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.RemoveDeviceEvent.Builder</ID>
+ <ID>ConstructorParameterNaming:SettingsKt.kt$SettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Settings.Builder</ID>
+ <ID>ConstructorParameterNaming:ShadowsocksEndpointDataKt.kt$ShadowsocksEndpointDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ShadowsocksEndpointData.Builder</ID>
+ <ID>ConstructorParameterNaming:SplitTunnelSettingsKt.kt$SplitTunnelSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.SplitTunnelSettings.Builder</ID>
+ <ID>ConstructorParameterNaming:TransportPortKt.kt$TransportPortKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TransportPort.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelEndpointKt.kt$TunnelEndpointKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelEndpoint.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelMetadataKt.kt$TunnelMetadataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelMetadata.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelOptionsKt.kt$TunnelOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelOptionsKt.kt$TunnelOptionsKt.GenericOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.GenericOptions.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelOptionsKt.kt$TunnelOptionsKt.OpenvpnOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.OpenvpnOptions.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelOptionsKt.kt$TunnelOptionsKt.WireguardOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.WireguardOptions.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelStateKt.kt$TunnelStateKt.ConnectedKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connected.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelStateKt.kt$TunnelStateKt.ConnectingKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connecting.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelStateKt.kt$TunnelStateKt.DisconnectedKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnected.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelStateKt.kt$TunnelStateKt.DisconnectingKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnecting.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelStateKt.kt$TunnelStateKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelStateKt.kt$TunnelStateKt.ErrorKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Error.Builder</ID>
+ <ID>ConstructorParameterNaming:TunnelStateRelayInfoKt.kt$TunnelStateRelayInfoKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelStateRelayInfo.Builder</ID>
+ <ID>ConstructorParameterNaming:UUIDKt.kt$UUIDKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.UUID.Builder</ID>
+ <ID>ConstructorParameterNaming:Udp2TcpObfuscationSettingsKt.kt$Udp2TcpObfuscationSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Udp2TcpObfuscationSettings.Builder</ID>
+ <ID>ConstructorParameterNaming:VoucherSubmissionKt.kt$VoucherSubmissionKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.VoucherSubmission.Builder</ID>
+ <ID>ConstructorParameterNaming:WireguardConstraintsKt.kt$WireguardConstraintsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.WireguardConstraints.Builder</ID>
+ <ID>ConstructorParameterNaming:WireguardEndpointDataKt.kt$WireguardEndpointDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.WireguardEndpointData.Builder</ID>
+ <ID>ConstructorParameterNaming:WireguardRelayEndpointDataKt.kt$WireguardRelayEndpointDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.WireguardRelayEndpointData.Builder</ID>
+ <ID>CyclomaticComplexMethod:BillingPaymentRepository.kt$BillingPaymentRepository$override fun purchaseProduct( productId: ProductId, activityProvider: () -&gt; Activity ): Flow&lt;PurchaseResult&gt;</ID>
+ <ID>CyclomaticComplexMethod:MockApiDispatcher.kt$MockApiDispatcher$override fun dispatch(request: RecordedRequest): MockResponse</ID>
+ <ID>CyclomaticComplexMethod:RelayLocationCell.kt$@Composable fun RelayLocationCell( relay: RelayItem, modifier: Modifier = Modifier, activeColor: Color = MaterialTheme.colorScheme.selected, inactiveColor: Color = MaterialTheme.colorScheme.error, selectedItem: RelayItem? = null, onSelectRelay: (item: RelayItem) -&gt; Unit = {} )</ID>
+ <ID>EmptyFunctionBlock:AccountTestRule.kt$AccountTestRule${}</ID>
+ <ID>EmptyKtFile:build.gradle.kts$.build.gradle.kts</ID>
+ <ID>ForbiddenComment:DeviceRevokedViewModel.kt$DeviceRevokedViewModel$// TODO: Refactor ConnectionProxy to be easily injectable rather than injecting</ID>
+ <ID>ForbiddenComment:MullvadDaemon.kt$MullvadDaemon$// TODO: Review this method when redoing Daemon communication, it can be null which was not</ID>
+ <ID>ForbiddenComment:PlayPurchaseInitError.kt$PlayPurchaseInitError.OtherError$// TODO: Add more errors here.</ID>
+ <ID>ForbiddenComment:PlayPurchaseVerifyError.kt$PlayPurchaseVerifyError.OtherError$// TODO: Add more errors here.</ID>
+ <ID>ForbiddenComment:ServiceConnectionManager.kt$ServiceConnectionManager$// TODO: Remove after refactoring fragments to support flow.</ID>
+ <ID>ForbiddenComment:ServiceConnectionManager.kt$ServiceConnectionManager$// TODO: Remove once `serviceNotifier` is no longer used.</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.BridgesKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Bridges</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.BridgesKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Bridges.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.DirectKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Direct</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.DirectKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Direct.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.ShadowsocksKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Shadowsocks</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.ShadowsocksKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Shadowsocks.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.Socks5LocalKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Local</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.Socks5LocalKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Local.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.Socks5RemoteKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Remote</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.Socks5RemoteKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Remote.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.SocksAuthKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethod.SocksAuth</ID>
+ <ID>FunctionNaming:AccessMethodKt.kt$AccessMethodKt.SocksAuthKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.SocksAuth.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:AccessMethodSettingKt.kt$AccessMethodSettingKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccessMethodSetting</ID>
+ <ID>FunctionNaming:AccessMethodSettingKt.kt$AccessMethodSettingKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethodSetting.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:AccountAndDeviceKt.kt$AccountAndDeviceKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccountAndDevice</ID>
+ <ID>FunctionNaming:AccountAndDeviceKt.kt$AccountAndDeviceKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccountAndDevice.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:AccountDataKt.kt$AccountDataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccountData</ID>
+ <ID>FunctionNaming:AccountDataKt.kt$AccountDataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccountData.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:AccountHistoryKt.kt$AccountHistoryKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AccountHistory</ID>
+ <ID>FunctionNaming:AccountHistoryKt.kt$AccountHistoryKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AccountHistory.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ApiAccessMethodSettingsKt.kt$ApiAccessMethodSettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ApiAccessMethodSettings</ID>
+ <ID>FunctionNaming:ApiAccessMethodSettingsKt.kt$ApiAccessMethodSettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ApiAccessMethodSettings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ApiAddressesKt.kt$ApiAddressesKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ApiAddresses</ID>
+ <ID>FunctionNaming:ApiAddressesKt.kt$ApiAddressesKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ApiAddresses.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:AppVersionInfoKt.kt$AppVersionInfoKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.AppVersionInfo</ID>
+ <ID>FunctionNaming:AppVersionInfoKt.kt$AppVersionInfoKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.AppVersionInfo.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:BridgeEndpointDataKt.kt$BridgeEndpointDataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeEndpointData</ID>
+ <ID>FunctionNaming:BridgeEndpointDataKt.kt$BridgeEndpointDataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeEndpointData.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.BridgeConstraints</ID>
+ <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.BridgeConstraints.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeSettings</ID>
+ <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.LocalProxySettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.LocalProxySettings</ID>
+ <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.LocalProxySettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.LocalProxySettings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxyAuthKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxyAuth</ID>
+ <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxyAuthKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxyAuth.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxySettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxySettings</ID>
+ <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxySettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxySettings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.ShadowsocksProxySettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.ShadowsocksProxySettings</ID>
+ <ID>FunctionNaming:BridgeSettingsKt.kt$BridgeSettingsKt.ShadowsocksProxySettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.ShadowsocksProxySettings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:BridgeStateKt.kt$BridgeStateKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.BridgeState</ID>
+ <ID>FunctionNaming:BridgeStateKt.kt$BridgeStateKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.BridgeState.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig</ID>
+ <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.OpenvpnConfigKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.OpenvpnConfig</ID>
+ <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.OpenvpnConfigKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.OpenvpnConfig.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig</ID>
+ <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.PeerConfig</ID>
+ <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.PeerConfig.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.TunnelConfig</ID>
+ <ID>FunctionNaming:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.TunnelConfig.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:CustomDnsOptionsKt.kt$CustomDnsOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.CustomDnsOptions</ID>
+ <ID>FunctionNaming:CustomDnsOptionsKt.kt$CustomDnsOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.CustomDnsOptions.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:CustomListKt.kt$CustomListKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.CustomList</ID>
+ <ID>FunctionNaming:CustomListKt.kt$CustomListKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.CustomList.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:CustomListSettingsKt.kt$CustomListSettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.CustomListSettings</ID>
+ <ID>FunctionNaming:CustomListSettingsKt.kt$CustomListSettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.CustomListSettings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:CustomRelaySettingsKt.kt$CustomRelaySettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.CustomRelaySettings</ID>
+ <ID>FunctionNaming:CustomRelaySettingsKt.kt$CustomRelaySettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.CustomRelaySettings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:DaemonEventKt.kt$DaemonEventKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DaemonEvent</ID>
+ <ID>FunctionNaming:DaemonEventKt.kt$DaemonEventKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DaemonEvent.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:DefaultDnsOptionsKt.kt$DefaultDnsOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DefaultDnsOptions</ID>
+ <ID>FunctionNaming:DefaultDnsOptionsKt.kt$DefaultDnsOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DefaultDnsOptions.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:DeviceEventKt.kt$DeviceEventKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DeviceEvent</ID>
+ <ID>FunctionNaming:DeviceEventKt.kt$DeviceEventKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DeviceEvent.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:DeviceKt.kt$DeviceKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.Device</ID>
+ <ID>FunctionNaming:DeviceKt.kt$DeviceKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.Device.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:DeviceListKt.kt$DeviceListKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DeviceList</ID>
+ <ID>FunctionNaming:DeviceListKt.kt$DeviceListKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DeviceList.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:DeviceRemovalKt.kt$DeviceRemovalKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DeviceRemoval</ID>
+ <ID>FunctionNaming:DeviceRemovalKt.kt$DeviceRemovalKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DeviceRemoval.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:DeviceStateKt.kt$DeviceStateKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DeviceState</ID>
+ <ID>FunctionNaming:DeviceStateKt.kt$DeviceStateKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DeviceState.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:DnsOptionsKt.kt$DnsOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.DnsOptions</ID>
+ <ID>FunctionNaming:DnsOptionsKt.kt$DnsOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.DnsOptions.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:EndpointKt.kt$EndpointKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.Endpoint</ID>
+ <ID>FunctionNaming:EndpointKt.kt$EndpointKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.Endpoint.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ErrorStateKt.kt$ErrorStateKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ErrorState</ID>
+ <ID>FunctionNaming:ErrorStateKt.kt$ErrorStateKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ErrorState.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ErrorState.FirewallPolicyError</ID>
+ <ID>FunctionNaming:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ErrorState.FirewallPolicyError.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ExcludedProcessKt.kt$ExcludedProcessKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ExcludedProcess</ID>
+ <ID>FunctionNaming:ExcludedProcessKt.kt$ExcludedProcessKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ExcludedProcess.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ExcludedProcessListKt.kt$ExcludedProcessListKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ExcludedProcessList</ID>
+ <ID>FunctionNaming:ExcludedProcessListKt.kt$ExcludedProcessListKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ExcludedProcessList.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:GeoIpLocationKt.kt$GeoIpLocationKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.GeoIpLocation</ID>
+ <ID>FunctionNaming:GeoIpLocationKt.kt$GeoIpLocationKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.GeoIpLocation.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:GeographicLocationConstraintKt.kt$GeographicLocationConstraintKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.GeographicLocationConstraint</ID>
+ <ID>FunctionNaming:GeographicLocationConstraintKt.kt$GeographicLocationConstraintKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.GeographicLocationConstraint.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:LocationConstraintKt.kt$LocationConstraintKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.LocationConstraint</ID>
+ <ID>FunctionNaming:LocationConstraintKt.kt$LocationConstraintKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.LocationConstraint.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:LocationKt.kt$LocationKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.Location</ID>
+ <ID>FunctionNaming:LocationKt.kt$LocationKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.Location.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:NewAccessMethodSettingKt.kt$NewAccessMethodSettingKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.NewAccessMethodSetting</ID>
+ <ID>FunctionNaming:NewAccessMethodSettingKt.kt$NewAccessMethodSettingKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.NewAccessMethodSetting.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:NormalRelaySettingsKt.kt$NormalRelaySettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.NormalRelaySettings</ID>
+ <ID>FunctionNaming:NormalRelaySettingsKt.kt$NormalRelaySettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.NormalRelaySettings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ObfuscationEndpointKt.kt$ObfuscationEndpointKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ObfuscationEndpoint</ID>
+ <ID>FunctionNaming:ObfuscationEndpointKt.kt$ObfuscationEndpointKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ObfuscationEndpoint.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ObfuscationSettingsKt.kt$ObfuscationSettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ObfuscationSettings</ID>
+ <ID>FunctionNaming:ObfuscationSettingsKt.kt$ObfuscationSettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ObfuscationSettings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:OpenVpnEndpointDataKt.kt$OpenVpnEndpointDataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpointData</ID>
+ <ID>FunctionNaming:OpenVpnEndpointDataKt.kt$OpenVpnEndpointDataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpointData.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:OpenVpnEndpointKt.kt$OpenVpnEndpointKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpoint</ID>
+ <ID>FunctionNaming:OpenVpnEndpointKt.kt$OpenVpnEndpointKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpoint.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:OpenvpnConstraintsKt.kt$OpenvpnConstraintsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.OpenvpnConstraints</ID>
+ <ID>FunctionNaming:OpenvpnConstraintsKt.kt$OpenvpnConstraintsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.OpenvpnConstraints.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:PortRangeKt.kt$PortRangeKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.PortRange</ID>
+ <ID>FunctionNaming:PortRangeKt.kt$PortRangeKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.PortRange.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ProxyEndpointKt.kt$ProxyEndpointKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ProxyEndpoint</ID>
+ <ID>FunctionNaming:ProxyEndpointKt.kt$ProxyEndpointKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ProxyEndpoint.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:PublicKeyKt.kt$PublicKeyKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.PublicKey</ID>
+ <ID>FunctionNaming:PublicKeyKt.kt$PublicKeyKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.PublicKey.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:QuantumResistantStateKt.kt$QuantumResistantStateKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.QuantumResistantState</ID>
+ <ID>FunctionNaming:QuantumResistantStateKt.kt$QuantumResistantStateKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.QuantumResistantState.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:RelayKt.kt$RelayKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.Relay</ID>
+ <ID>FunctionNaming:RelayKt.kt$RelayKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.Relay.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:RelayListCityKt.kt$RelayListCityKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.RelayListCity</ID>
+ <ID>FunctionNaming:RelayListCityKt.kt$RelayListCityKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.RelayListCity.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:RelayListCountryKt.kt$RelayListCountryKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.RelayListCountry</ID>
+ <ID>FunctionNaming:RelayListCountryKt.kt$RelayListCountryKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.RelayListCountry.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:RelayListKt.kt$RelayListKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.RelayList</ID>
+ <ID>FunctionNaming:RelayListKt.kt$RelayListKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.RelayList.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:RelaySettingsKt.kt$RelaySettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.RelaySettings</ID>
+ <ID>FunctionNaming:RelaySettingsKt.kt$RelaySettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.RelaySettings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:RemoveDeviceEventKt.kt$RemoveDeviceEventKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.RemoveDeviceEvent</ID>
+ <ID>FunctionNaming:RemoveDeviceEventKt.kt$RemoveDeviceEventKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.RemoveDeviceEvent.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:SettingsKt.kt$SettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.Settings</ID>
+ <ID>FunctionNaming:SettingsKt.kt$SettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.Settings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:ShadowsocksEndpointDataKt.kt$ShadowsocksEndpointDataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.ShadowsocksEndpointData</ID>
+ <ID>FunctionNaming:ShadowsocksEndpointDataKt.kt$ShadowsocksEndpointDataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.ShadowsocksEndpointData.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:SplitTunnelSettingsKt.kt$SplitTunnelSettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.SplitTunnelSettings</ID>
+ <ID>FunctionNaming:SplitTunnelSettingsKt.kt$SplitTunnelSettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.SplitTunnelSettings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TransportPortKt.kt$TransportPortKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TransportPort</ID>
+ <ID>FunctionNaming:TransportPortKt.kt$TransportPortKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TransportPort.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelEndpointKt.kt$TunnelEndpointKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelEndpoint</ID>
+ <ID>FunctionNaming:TunnelEndpointKt.kt$TunnelEndpointKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelEndpoint.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelMetadataKt.kt$TunnelMetadataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelMetadata</ID>
+ <ID>FunctionNaming:TunnelMetadataKt.kt$TunnelMetadataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelMetadata.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelOptions</ID>
+ <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.GenericOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.GenericOptions</ID>
+ <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.GenericOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.GenericOptions.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.OpenvpnOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.OpenvpnOptions</ID>
+ <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.OpenvpnOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.OpenvpnOptions.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.WireguardOptionsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.WireguardOptions</ID>
+ <ID>FunctionNaming:TunnelOptionsKt.kt$TunnelOptionsKt.WireguardOptionsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.WireguardOptions.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.ConnectedKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connected</ID>
+ <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.ConnectedKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connected.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.ConnectingKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connecting</ID>
+ <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.ConnectingKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connecting.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.DisconnectedKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnected</ID>
+ <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.DisconnectedKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnected.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.DisconnectingKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnecting</ID>
+ <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.DisconnectingKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnecting.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelState</ID>
+ <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.ErrorKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelState.Error</ID>
+ <ID>FunctionNaming:TunnelStateKt.kt$TunnelStateKt.ErrorKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Error.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:TunnelStateRelayInfoKt.kt$TunnelStateRelayInfoKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.TunnelStateRelayInfo</ID>
+ <ID>FunctionNaming:TunnelStateRelayInfoKt.kt$TunnelStateRelayInfoKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.TunnelStateRelayInfo.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:UUIDKt.kt$UUIDKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.UUID</ID>
+ <ID>FunctionNaming:UUIDKt.kt$UUIDKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.UUID.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:Udp2TcpObfuscationSettingsKt.kt$Udp2TcpObfuscationSettingsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.Udp2TcpObfuscationSettings</ID>
+ <ID>FunctionNaming:Udp2TcpObfuscationSettingsKt.kt$Udp2TcpObfuscationSettingsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.Udp2TcpObfuscationSettings.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:VoucherSubmissionKt.kt$VoucherSubmissionKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.VoucherSubmission</ID>
+ <ID>FunctionNaming:VoucherSubmissionKt.kt$VoucherSubmissionKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.VoucherSubmission.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:WireguardConstraintsKt.kt$WireguardConstraintsKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.WireguardConstraints</ID>
+ <ID>FunctionNaming:WireguardConstraintsKt.kt$WireguardConstraintsKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.WireguardConstraints.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:WireguardEndpointDataKt.kt$WireguardEndpointDataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.WireguardEndpointData</ID>
+ <ID>FunctionNaming:WireguardEndpointDataKt.kt$WireguardEndpointDataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.WireguardEndpointData.Builder, ): Dsl</ID>
+ <ID>FunctionNaming:WireguardRelayEndpointDataKt.kt$WireguardRelayEndpointDataKt.Dsl$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _build(): mullvad_daemon.management_interface.ManagementInterface.WireguardRelayEndpointData</ID>
+ <ID>FunctionNaming:WireguardRelayEndpointDataKt.kt$WireguardRelayEndpointDataKt.Dsl.Companion$@kotlin.jvm.JvmSynthetic @kotlin.PublishedApi internal fun _create( builder: mullvad_daemon.management_interface.ManagementInterface.WireguardRelayEndpointData.Builder, ): Dsl</ID>
+ <ID>LargeClass:ConnectScreenTest.kt$ConnectScreenTest</ID>
+ <ID>LargeClass:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt$ManagementServiceCoroutineImplBase : AbstractCoroutineServerImpl</ID>
+ <ID>LargeClass:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt$ManagementServiceCoroutineStub : AbstractCoroutineStub</ID>
+ <ID>LongMethod:ConnectScreen.kt$@Composable fun ConnectScreen( uiState: ConnectUiState, onDisconnectClick: () -&gt; Unit = {}, onReconnectClick: () -&gt; Unit = {}, onConnectClick: () -&gt; Unit = {}, onCancelClick: () -&gt; Unit = {}, onSwitchLocationClick: () -&gt; Unit = {}, onUpdateVersionClick: () -&gt; Unit = {}, onManageAccountClick: () -&gt; Unit = {}, onSettingsClick: () -&gt; Unit = {}, onAccountClick: () -&gt; Unit = {}, onDismissNewDeviceClick: () -&gt; Unit = {} )</ID>
+ <ID>LongMethod:ConnectionButton.kt$@OptIn(ExperimentalMaterial3Api::class) @Composable private fun ConnectionButton( text: String, mainClick: () -&gt; Unit, reconnectClick: () -&gt; Unit, isReconnectButtonEnabled: Boolean, containerColor: Color, contentColor: Color, modifier: Modifier = Modifier, reconnectButtonTestTag: String = "" )</ID>
+ <ID>LongMethod:FilterScreen.kt$@Composable fun FilterScreen( uiState: RelayFilterState, onBackClick: () -&gt; Unit = {}, onApplyClick: () -&gt; Unit = {}, onSelectedOwnership: (ownership: Ownership?) -&gt; Unit = {}, onAllProviderCheckChange: (isChecked: Boolean) -&gt; Unit = {}, onSelectedProvider: (checked: Boolean, provider: Provider) -&gt; Unit = { _, _ -&gt; } )</ID>
+ <ID>LongMethod:LoginScreen.kt$@Composable @OptIn(ExperimentalComposeUiApi::class) private fun LoginContent( uiState: LoginUiState, onAccountNumberChange: (String) -&gt; Unit, onLoginClick: (String) -&gt; Unit, onDeleteHistoryClick: () -&gt; Unit )</ID>
+ <ID>LongMethod:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$final override fun bindService(): ServerServiceDefinition</ID>
+ <ID>LongMethod:NotificationBanner.kt$@Composable private fun Notification(notificationBannerData: NotificationData)</ID>
+ <ID>LongMethod:OutOfTimeScreen.kt$@Composable fun OutOfTimeScreen( uiState: OutOfTimeUiState, onDisconnectClick: () -&gt; Unit = {}, onSitePaymentClick: () -&gt; Unit = {}, onRedeemVoucherClick: () -&gt; Unit = {}, onSettingsClick: () -&gt; Unit = {}, onAccountClick: () -&gt; Unit = {}, onPurchaseBillingProductClick: (ProductId) -&gt; Unit = { _ -&gt; }, navigateToVerificationPendingDialog: () -&gt; Unit = {} )</ID>
+ <ID>LongMethod:PrivacyDisclaimerScreen.kt$@Composable fun PrivacyDisclaimerScreen( uiState: PrivacyDisclaimerViewState, onPrivacyPolicyLinkClicked: () -&gt; Unit, onAcceptClicked: () -&gt; Unit, )</ID>
+ <ID>LongMethod:RedeemVoucherDialog.kt$@Composable fun RedeemVoucherDialog( uiState: VoucherDialogUiState, onVoucherInputChange: (String) -&gt; Unit = {}, onRedeem: (voucherCode: String) -&gt; Unit, onDismiss: (isTimeAdded: Boolean) -&gt; Unit )</ID>
+ <ID>LongMethod:RelayLocationCell.kt$@Composable @Preview private fun PreviewRelayLocationCell()</ID>
+ <ID>LongMethod:RelayLocationCell.kt$@Composable fun RelayLocationCell( relay: RelayItem, modifier: Modifier = Modifier, activeColor: Color = MaterialTheme.colorScheme.selected, inactiveColor: Color = MaterialTheme.colorScheme.error, selectedItem: RelayItem? = null, onSelectRelay: (item: RelayItem) -&gt; Unit = {} )</ID>
+ <ID>LongMethod:SelectLocationScreen.kt$@Composable fun SelectLocationScreen( uiState: SelectLocationUiState, onSelectRelay: (item: RelayItem) -&gt; Unit = {}, onSearchTermInput: (searchTerm: String) -&gt; Unit = {}, onBackClick: () -&gt; Unit = {}, onFilterClick: () -&gt; Unit = {}, removeOwnershipFilter: () -&gt; Unit = {}, removeProviderFilter: () -&gt; Unit = {} )</ID>
+ <ID>LongMethod:SettingsScreen.kt$@ExperimentalMaterial3Api @Composable fun SettingsScreen( uiState: SettingsUiState, onVpnSettingCellClick: () -&gt; Unit = {}, onSplitTunnelingCellClick: () -&gt; Unit = {}, onReportProblemCellClick: () -&gt; Unit = {}, onBackClick: () -&gt; Unit = {} )</ID>
+ <ID>LongMethod:SplitTunnelingScreen.kt$@Composable @OptIn(ExperimentalFoundationApi::class) fun SplitTunnelingScreen( uiState: SplitTunnelingUiState = SplitTunnelingUiState.Loading, onShowSystemAppsClick: (show: Boolean) -&gt; Unit = {}, onExcludeAppClick: (packageName: String) -&gt; Unit = {}, onIncludeAppClick: (packageName: String) -&gt; Unit = {}, onBackClick: () -&gt; Unit = {}, onResolveIcon: (String) -&gt; Bitmap? = { null }, )</ID>
+ <ID>LongMethod:VpnSettingsScreen.kt$@Destination(style = SlideInFromRightTransition::class) @Composable fun VpnSettings( navigator: DestinationsNavigator, dnsDialogResult: ResultRecipient&lt;DnsDialogDestination, Boolean&gt;, customWgPortResult: ResultRecipient&lt;WireguardCustomPortDialogDestination, Int?&gt; )</ID>
+ <ID>LongMethod:VpnSettingsScreen.kt$@OptIn(ExperimentalFoundationApi::class) @Composable fun VpnSettingsScreen( uiState: VpnSettingsUiState, snackbarHostState: SnackbarHostState = remember { SnackbarHostState() }, navigateToContentBlockersInfo: () -&gt; Unit = {}, navigateToCustomDnsInfo: () -&gt; Unit = {}, navigateToMalwareInfo: () -&gt; Unit = {}, navigateToObfuscationInfo: () -&gt; Unit = {}, navigateToQuantumResistanceInfo: () -&gt; Unit = {}, navigateUdp2TcpInfo: () -&gt; Unit = {}, navigateToWireguardPortInfo: (availablePortRanges: List&lt;PortRange&gt;) -&gt; Unit = {}, navigateToLocalNetworkSharingInfo: () -&gt; Unit = {}, navigateToWireguardPortDialog: () -&gt; Unit = {}, onToggleBlockTrackers: (Boolean) -&gt; Unit = {}, onToggleBlockAds: (Boolean) -&gt; Unit = {}, onToggleBlockMalware: (Boolean) -&gt; Unit = {}, onToggleAutoConnect: (Boolean) -&gt; Unit = {}, onToggleLocalNetworkSharing: (Boolean) -&gt; Unit = {}, onToggleBlockAdultContent: (Boolean) -&gt; Unit = {}, onToggleBlockGambling: (Boolean) -&gt; Unit = {}, onToggleBlockSocialMedia: (Boolean) -&gt; Unit = {}, navigateToMtuDialog: (mtu: Int?) -&gt; Unit = {}, navigateToDns: (index: Int?, address: String?) -&gt; Unit = { _, _ -&gt; }, onToggleDnsClick: (Boolean) -&gt; Unit = {}, onBackClick: () -&gt; Unit = {}, onSelectObfuscationSetting: (selectedObfuscation: SelectedObfuscation) -&gt; Unit = {}, onSelectQuantumResistanceSetting: (quantumResistant: QuantumResistantState) -&gt; Unit = {}, onWireguardPortSelected: (port: Constraint&lt;Port&gt;) -&gt; Unit = {}, )</ID>
+ <ID>MagicNumber:Chevron.kt$100</ID>
+ <ID>MagicNumber:Chevron.kt$270f</ID>
+ <ID>MagicNumber:Chevron.kt$90f</ID>
+ <ID>MagicNumber:CustomTextField.kt$100</ID>
+ <ID>MagicNumber:IntegerExtension.kt$1280</ID>
+ <ID>MagicNumber:IntegerExtension.kt$1420</ID>
+ <ID>MagicNumber:LoginScreen.kt$3f</ID>
+ <ID>MagicNumber:LoginViewModel.kt$LoginViewModel$1000</ID>
+ <ID>MagicNumber:MullvadTileService.kt$MullvadTileService$300L</ID>
+ <ID>MagicNumber:NavigateBackIconButton.kt$90f</ID>
+ <ID>MagicNumber:RedeemVoucherDialog.kt$30</ID>
+ <ID>MagicNumber:RedeemVoucherDialog.kt$59</ID>
+ <ID>MagicNumber:ResourcesExtensions.kt$3</ID>
+ <ID>MagicNumber:SelectLocationScreen.kt$270f</ID>
+ <ID>MagicNumber:TalpidVpnService.kt$TalpidVpnService$128</ID>
+ <ID>MagicNumber:TalpidVpnService.kt$TalpidVpnService$32</ID>
+ <ID>MatchingDeclarationName:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt</ID>
+ <ID>MatchingDeclarationName:SingleModuleExtensions.kt$NavGraph : NavGraphSpec</ID>
+ <ID>MaxLineLength:AccessMethodKt.kt$AccessMethodKt.Dsl$public</ID>
+ <ID>MaxLineLength:AccessMethodKt.kt$AccessMethodKt.ShadowsocksKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Shadowsocks.Builder</ID>
+ <ID>MaxLineLength:AccessMethodKt.kt$AccessMethodKt.Socks5LocalKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Local.Builder</ID>
+ <ID>MaxLineLength:AccessMethodKt.kt$AccessMethodKt.Socks5RemoteKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.Socks5Remote.Builder</ID>
+ <ID>MaxLineLength:AccessMethodKt.kt$AccessMethodKt.SocksAuthKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.AccessMethod.SocksAuth.Builder</ID>
+ <ID>MaxLineLength:AccessMethodKt.kt$public</ID>
+ <ID>MaxLineLength:AccessMethodSettingKt.kt$public</ID>
+ <ID>MaxLineLength:AccountAndDeviceKt.kt$public</ID>
+ <ID>MaxLineLength:AccountDataKt.kt$public</ID>
+ <ID>MaxLineLength:AccountHistoryKt.kt$public</ID>
+ <ID>MaxLineLength:ApiAccessMethodSettingsKt.kt$ApiAccessMethodSettingsKt.Dsl$public</ID>
+ <ID>MaxLineLength:ApiAccessMethodSettingsKt.kt$ApiAccessMethodSettingsKt.Dsl$values: kotlin.collections.Iterable&lt;mullvad_daemon.management_interface.ManagementInterface.AccessMethodSetting&gt;</ID>
+ <ID>MaxLineLength:ApiAddressesKt.kt$ApiAddressesKt.Dsl$public</ID>
+ <ID>MaxLineLength:BridgeEndpointDataKt.kt$BridgeEndpointDataKt.Dsl$public</ID>
+ <ID>MaxLineLength:BridgeEndpointDataKt.kt$BridgeEndpointDataKt.Dsl$values: kotlin.collections.Iterable&lt;mullvad_daemon.management_interface.ManagementInterface.ShadowsocksEndpointData&gt;</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt$mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.ShadowsocksProxySettings.newBuilder()</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl$@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl$internal</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.BridgeConstraints.Builder</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.BridgeConstraintsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.BridgeConstraints.Builder</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.Dsl$public</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.LocalProxySettingsKt.Dsl$internal</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.LocalProxySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.LocalProxySettings.Builder</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.LocalProxySettingsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.LocalProxySettings.Builder</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxyAuthKt.Dsl$internal</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxyAuthKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxyAuth.Builder</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxyAuthKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxyAuth.Builder</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxySettingsKt.Dsl$internal</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxySettings.Builder</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.RemoteProxySettingsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.RemoteProxySettings.Builder</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.ShadowsocksProxySettingsKt.Dsl$internal</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.ShadowsocksProxySettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.ShadowsocksProxySettings.Builder</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$BridgeSettingsKt.ShadowsocksProxySettingsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.BridgeSettings.ShadowsocksProxySettings.Builder</ID>
+ <ID>MaxLineLength:BridgeSettingsKt.kt$public</ID>
+ <ID>MaxLineLength:ChangelogDestination.kt$ChangelogDestination$changeLog = changelogNavType.get(savedStateHandle, "changeLog") ?: throw RuntimeException("'changeLog' argument is mandatory, but was not present!")</ID>
+ <ID>MaxLineLength:ChangelogDestination.kt$ChangelogDestination$changeLog = changelogNavType.safeGet(bundle, "changeLog") ?: throw RuntimeException("'changeLog' argument is mandatory, but was not present!")</ID>
+ <ID>MaxLineLength:ChangelogNavType.kt$public val changelogNavType: ChangelogNavType = ChangelogNavType(DefaultParcelableNavTypeSerializer(Changelog::class.java))</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.OpenvpnConfigKt.Dsl$internal</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.OpenvpnConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.OpenvpnConfig.Builder</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.OpenvpnConfigKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.OpenvpnConfig.Builder</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt$block: mullvad_daemon.management_interface.ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl.() -&gt; kotlin.Unit</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt$block: mullvad_daemon.management_interface.ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl.() -&gt; kotlin.Unit</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt$mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.PeerConfig.newBuilder()</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt$mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.TunnelConfig.newBuilder()</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl$internal</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.Builder</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl$public</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.Builder</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl$@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl$internal</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.PeerConfig.Builder</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl$public</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.PeerConfigKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.PeerConfig.Builder</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl$@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl$internal</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.TunnelConfig.Builder</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.ConnectionConfig.WireguardConfig.TunnelConfig.Builder</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$block: mullvad_daemon.management_interface.ConnectionConfigKt.WireguardConfigKt.TunnelConfigKt.Dsl.() -&gt; kotlin.Unit</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$public</ID>
+ <ID>MaxLineLength:ConnectionConfigKt.kt$public inline</ID>
+ <ID>MaxLineLength:CustomDnsOptionsKt.kt$CustomDnsOptionsKt.Dsl$@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)</ID>
+ <ID>MaxLineLength:CustomListKt.kt$CustomListKt.Dsl$public</ID>
+ <ID>MaxLineLength:CustomListKt.kt$CustomListKt.Dsl$values: kotlin.collections.Iterable&lt;mullvad_daemon.management_interface.ManagementInterface.GeographicLocationConstraint&gt;</ID>
+ <ID>MaxLineLength:CustomListSettingsKt.kt$CustomListSettingsKt.Dsl$public</ID>
+ <ID>MaxLineLength:CustomRelaySettingsKt.kt$public</ID>
+ <ID>MaxLineLength:DaemonEventKt.kt$public</ID>
+ <ID>MaxLineLength:DeviceEventKt.kt$public</ID>
+ <ID>MaxLineLength:DeviceKt.kt$public</ID>
+ <ID>MaxLineLength:DeviceListDestination.kt$DeviceListDestination$accountToken = DestinationsStringNavType.get(savedStateHandle, "accountToken") ?: throw RuntimeException("'accountToken' argument is mandatory, but was not present!")</ID>
+ <ID>MaxLineLength:DeviceListDestination.kt$DeviceListDestination$accountToken = DestinationsStringNavType.safeGet(bundle, "accountToken") ?: throw RuntimeException("'accountToken' argument is mandatory, but was not present!")</ID>
+ <ID>MaxLineLength:DeviceListKt.kt$DeviceListKt.Dsl$public</ID>
+ <ID>MaxLineLength:DeviceStateKt.kt$public</ID>
+ <ID>MaxLineLength:DnsOptionsKt.kt$public</ID>
+ <ID>MaxLineLength:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl$internal</ID>
+ <ID>MaxLineLength:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.ErrorState.FirewallPolicyError.Builder</ID>
+ <ID>MaxLineLength:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl$public</ID>
+ <ID>MaxLineLength:ErrorStateKt.kt$ErrorStateKt.FirewallPolicyErrorKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.ErrorState.FirewallPolicyError.Builder</ID>
+ <ID>MaxLineLength:ErrorStateKt.kt$public</ID>
+ <ID>MaxLineLength:ExcludedProcessListKt.kt$ExcludedProcessListKt.Dsl$public</ID>
+ <ID>MaxLineLength:ExcludedProcessListKt.kt$ExcludedProcessListKt.Dsl$values: kotlin.collections.Iterable&lt;mullvad_daemon.management_interface.ManagementInterface.ExcludedProcess&gt;</ID>
+ <ID>MaxLineLength:GeographicLocationConstraintKt.kt$GeographicLocationConstraintKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.GeographicLocationConstraint.Builder</ID>
+ <ID>MaxLineLength:LocationConstraintKt.kt$public</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt$public</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.AddSplitTunnelProcess is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.ClearSplitTunnelProcesses is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.GetCurrentApiAccessMethod is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.GetExcludedProcesses is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.GetSplitTunnelProcesses is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.IsPerformingPostUpgrade is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.RemoveApiAccessMethod is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.RemoveSplitTunnelApp is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.RemoveSplitTunnelProcess is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.ResetWireguardRotationInterval is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.SetBlockWhenDisconnected is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.SetObfuscationSettings is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.SetQuantumResistantTunnel is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.SetWireguardRotationInterval is unimplemented"</ID>
+ <ID>MaxLineLength:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt.ManagementServiceCoroutineImplBase$"Method mullvad_daemon.management_interface.ManagementService.UpdateApiAccessMethod is unimplemented"</ID>
+ <ID>MaxLineLength:NavArgsGetters.kt$RemoveDeviceConfirmationDialogDestination.NavArgs::class.java -&gt; RemoveDeviceConfirmationDialogDestination.argsFrom(argsContainer) as T</ID>
+ <ID>MaxLineLength:NavArgsGetters.kt$WireguardCustomPortDialogDestination.NavArgs::class.java -&gt; WireguardCustomPortDialogDestination.argsFrom(argsContainer) as T</ID>
+ <ID>MaxLineLength:NavArgsGetters.kt$WireguardPortInfoDialogDestination.NavArgs::class.java -&gt; WireguardPortInfoDialogDestination.argsFrom(argsContainer) as T</ID>
+ <ID>MaxLineLength:NewAccessMethodSettingKt.kt$public</ID>
+ <ID>MaxLineLength:NormalRelaySettingsKt.kt$NormalRelaySettingsKt.Dsl$@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)</ID>
+ <ID>MaxLineLength:NormalRelaySettingsKt.kt$public</ID>
+ <ID>MaxLineLength:ObfuscationSettingsKt.kt$ObfuscationSettingsKt.Dsl$public</ID>
+ <ID>MaxLineLength:ObfuscationSettingsKt.kt$public</ID>
+ <ID>MaxLineLength:OpenVpnEndpointDataKt.kt$OpenVpnEndpointDataKt.Dsl$public</ID>
+ <ID>MaxLineLength:OpenVpnEndpointDataKt.kt$OpenVpnEndpointDataKt.Dsl$values: kotlin.collections.Iterable&lt;mullvad_daemon.management_interface.ManagementInterface.OpenVpnEndpoint&gt;</ID>
+ <ID>MaxLineLength:OpenvpnConstraintsKt.kt$public</ID>
+ <ID>MaxLineLength:PaymentDestination.kt$PaymentDestination$productId = DestinationsStringNavType.get(savedStateHandle, "productId")?.let { ProductId(it) } ?: throw RuntimeException("'productId' argument is mandatory, but was not present!")</ID>
+ <ID>MaxLineLength:PaymentDestination.kt$PaymentDestination$productId = DestinationsStringNavType.safeGet(bundle, "productId")?.let { ProductId(it) } ?: throw RuntimeException("'productId' argument is mandatory, but was not present!")</ID>
+ <ID>MaxLineLength:PublicKeyKt.kt$public</ID>
+ <ID>MaxLineLength:RelayKt.kt$public</ID>
+ <ID>MaxLineLength:RelayListCityKt.kt$RelayListCityKt.Dsl$public</ID>
+ <ID>MaxLineLength:RelayListCountryKt.kt$RelayListCountryKt.Dsl$public</ID>
+ <ID>MaxLineLength:RelayListKt.kt$RelayListKt.Dsl$public</ID>
+ <ID>MaxLineLength:RelayListKt.kt$RelayListKt.Dsl$values: kotlin.collections.Iterable&lt;mullvad_daemon.management_interface.ManagementInterface.RelayListCountry&gt;</ID>
+ <ID>MaxLineLength:RelayListKt.kt$public</ID>
+ <ID>MaxLineLength:RelaySettingsKt.kt$public</ID>
+ <ID>MaxLineLength:RemoveDeviceConfirmationDialogDestination.kt$RemoveDeviceConfirmationDialogDestination$device = deviceNavType.get(savedStateHandle, "device") ?: throw RuntimeException("'device' argument is mandatory, but was not present!")</ID>
+ <ID>MaxLineLength:RemoveDeviceConfirmationDialogDestination.kt$RemoveDeviceConfirmationDialogDestination$device = deviceNavType.safeGet(bundle, "device") ?: throw RuntimeException("'device' argument is mandatory, but was not present!")</ID>
+ <ID>MaxLineLength:RemoveDeviceConfirmationDialogDestination.kt$RemoveDeviceConfirmationDialogDestination$public</ID>
+ <ID>MaxLineLength:RemoveDeviceEventKt.kt$RemoveDeviceEventKt.Dsl$public</ID>
+ <ID>MaxLineLength:SettingsKt.kt$public</ID>
+ <ID>MaxLineLength:SplitTunnelSettingsKt.kt$SplitTunnelSettingsKt.Dsl$@kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)</ID>
+ <ID>MaxLineLength:TunnelEndpointKt.kt$public</ID>
+ <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.GenericOptionsKt.Dsl$internal</ID>
+ <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.GenericOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.GenericOptions.Builder</ID>
+ <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.GenericOptionsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.GenericOptions.Builder</ID>
+ <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.OpenvpnOptionsKt.Dsl$internal</ID>
+ <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.OpenvpnOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.OpenvpnOptions.Builder</ID>
+ <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.OpenvpnOptionsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.OpenvpnOptions.Builder</ID>
+ <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.WireguardOptionsKt.Dsl$internal</ID>
+ <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.WireguardOptionsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.WireguardOptions.Builder</ID>
+ <ID>MaxLineLength:TunnelOptionsKt.kt$TunnelOptionsKt.WireguardOptionsKt.Dsl.Companion$builder: mullvad_daemon.management_interface.ManagementInterface.TunnelOptions.WireguardOptions.Builder</ID>
+ <ID>MaxLineLength:TunnelOptionsKt.kt$public</ID>
+ <ID>MaxLineLength:TunnelStateKt.kt$TunnelStateKt.ConnectingKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Connecting.Builder</ID>
+ <ID>MaxLineLength:TunnelStateKt.kt$TunnelStateKt.DisconnectedKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnected.Builder</ID>
+ <ID>MaxLineLength:TunnelStateKt.kt$TunnelStateKt.DisconnectingKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.TunnelState.Disconnecting.Builder</ID>
+ <ID>MaxLineLength:TunnelStateKt.kt$public</ID>
+ <ID>MaxLineLength:TunnelStateRelayInfoKt.kt$public</ID>
+ <ID>MaxLineLength:Udp2TcpObfuscationSettingsKt.kt$Udp2TcpObfuscationSettingsKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.Udp2TcpObfuscationSettings.Builder</ID>
+ <ID>MaxLineLength:VoucherSubmissionKt.kt$public</ID>
+ <ID>MaxLineLength:WireguardConstraintsKt.kt$public</ID>
+ <ID>MaxLineLength:WireguardCustomPortDialogDestination.kt$WireguardCustomPortDialogDestination$navArg = wireguardCustomPortNavArgsNavType.get(savedStateHandle, "navArg") ?: throw RuntimeException("'navArg' argument is mandatory, but was not present!")</ID>
+ <ID>MaxLineLength:WireguardCustomPortDialogDestination.kt$WireguardCustomPortDialogDestination$navArg = wireguardCustomPortNavArgsNavType.safeGet(bundle, "navArg") ?: throw RuntimeException("'navArg' argument is mandatory, but was not present!")</ID>
+ <ID>MaxLineLength:WireguardCustomPortNavArgsNavType.kt$public val wireguardCustomPortNavArgsNavType: WireguardCustomPortNavArgsNavType = WireguardCustomPortNavArgsNavType(DefaultParcelableNavTypeSerializer(WireguardCustomPortNavArgs::class.java))</ID>
+ <ID>MaxLineLength:WireguardEndpointDataKt.kt$WireguardEndpointDataKt.Dsl$public</ID>
+ <ID>MaxLineLength:WireguardPortInfoDialogArgumentNavType.kt$public val wireguardPortInfoDialogArgumentNavType: WireguardPortInfoDialogArgumentNavType = WireguardPortInfoDialogArgumentNavType(DefaultParcelableNavTypeSerializer(WireguardPortInfoDialogArgument::class.java))</ID>
+ <ID>MaxLineLength:WireguardPortInfoDialogDestination.kt$WireguardPortInfoDialogDestination$argument = wireguardPortInfoDialogArgumentNavType.get(savedStateHandle, "argument") ?: throw RuntimeException("'argument' argument is mandatory, but was not present!")</ID>
+ <ID>MaxLineLength:WireguardPortInfoDialogDestination.kt$WireguardPortInfoDialogDestination$argument = wireguardPortInfoDialogArgumentNavType.safeGet(bundle, "argument") ?: throw RuntimeException("'argument' argument is mandatory, but was not present!")</ID>
+ <ID>MaxLineLength:WireguardRelayEndpointDataKt.kt$WireguardRelayEndpointDataKt.Dsl$private val _builder: mullvad_daemon.management_interface.ManagementInterface.WireguardRelayEndpointData.Builder</ID>
+ <ID>MemberNameEqualsClassName:Message.kt$Message$val message: RawMessage get() = RawMessage.obtain().also { message -&gt; message.what = messageId message.data = Bundle() message.data.putParcelable(messageKey, this) }</ID>
+ <ID>NestedBlockDepth:MockApiDispatcher.kt$MockApiDispatcher$override fun dispatch(request: RecordedRequest): MockResponse</ID>
+ <ID>NestedBlockDepth:RelayListExtensions.kt$fun List&lt;RelayCountry&gt;.filterOnSearchTerm( searchTerm: String, selectedItem: RelayItem? ): List&lt;RelayCountry&gt;</ID>
+ <ID>NewLineAtEndOfFile:AccountDestination.kt$net.mullvad.mullvadvpn.compose.destinations.AccountDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:ChangelogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ChangelogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:ChangelogNavType.kt$net.mullvad.mullvadvpn.compose.navtype.ChangelogNavType.kt</ID>
+ <ID>NewLineAtEndOfFile:ConnectDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ConnectDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:ContentBlockersInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ContentBlockersInfoDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:CustomDnsInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.CustomDnsInfoDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:DeviceListDestination.kt$net.mullvad.mullvadvpn.compose.destinations.DeviceListDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:DeviceNameInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.DeviceNameInfoDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:DeviceNavType.kt$net.mullvad.mullvadvpn.compose.navtype.DeviceNavType.kt</ID>
+ <ID>NewLineAtEndOfFile:DeviceRevokedDestination.kt$net.mullvad.mullvadvpn.compose.destinations.DeviceRevokedDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:DnsDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.DnsDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:FilterScreenDestination.kt$net.mullvad.mullvadvpn.compose.destinations.FilterScreenDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:LocalNetworkSharingInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.LocalNetworkSharingInfoDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:LoginDestination.kt$net.mullvad.mullvadvpn.compose.destinations.LoginDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:MalwareInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.MalwareInfoDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:MtuDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.MtuDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:NavGraphs.kt$net.mullvad.mullvadvpn.compose.NavGraphs.kt</ID>
+ <ID>NewLineAtEndOfFile:NoDaemonScreenDestination.kt$net.mullvad.mullvadvpn.compose.destinations.NoDaemonScreenDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:ObfuscationInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ObfuscationInfoDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:OutOfTimeDestination.kt$net.mullvad.mullvadvpn.compose.destinations.OutOfTimeDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:PaymentDestination.kt$net.mullvad.mullvadvpn.compose.destinations.PaymentDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:PrivacyDisclaimerDestination.kt$net.mullvad.mullvadvpn.compose.destinations.PrivacyDisclaimerDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:QuantumResistanceInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.QuantumResistanceInfoDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:RedeemVoucherDestination.kt$net.mullvad.mullvadvpn.compose.destinations.RedeemVoucherDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:RemoveDeviceConfirmationDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.RemoveDeviceConfirmationDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:ReportProblemDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ReportProblemDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:ReportProblemNoEmailDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ReportProblemNoEmailDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:SelectLocationDestination.kt$net.mullvad.mullvadvpn.compose.destinations.SelectLocationDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:SettingsDestination.kt$net.mullvad.mullvadvpn.compose.destinations.SettingsDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:SplashDestination.kt$net.mullvad.mullvadvpn.compose.destinations.SplashDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:SplitTunnelingDestination.kt$net.mullvad.mullvadvpn.compose.destinations.SplitTunnelingDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:UdpOverTcpPortInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.UdpOverTcpPortInfoDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:VerificationPendingDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.VerificationPendingDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:ViewLogsDestination.kt$net.mullvad.mullvadvpn.compose.destinations.ViewLogsDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:VpnSettingsDestination.kt$net.mullvad.mullvadvpn.compose.destinations.VpnSettingsDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:WelcomeDestination.kt$net.mullvad.mullvadvpn.compose.destinations.WelcomeDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:WireguardCustomPortDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.WireguardCustomPortDialogDestination.kt</ID>
+ <ID>NewLineAtEndOfFile:WireguardCustomPortNavArgsNavType.kt$net.mullvad.mullvadvpn.compose.navtype.WireguardCustomPortNavArgsNavType.kt</ID>
+ <ID>NewLineAtEndOfFile:WireguardPortInfoDialogArgumentNavType.kt$net.mullvad.mullvadvpn.compose.navtype.WireguardPortInfoDialogArgumentNavType.kt</ID>
+ <ID>NewLineAtEndOfFile:WireguardPortInfoDialogDestination.kt$net.mullvad.mullvadvpn.compose.destinations.WireguardPortInfoDialogDestination.kt</ID>
+ <ID>PackageNaming:AccessMethodKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:AccessMethodSettingKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:AccountAndDeviceKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:AccountDataKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:AccountHistoryKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:ApiAccessMethodSettingsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:ApiAddressesKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:AppVersionInfoKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:BridgeEndpointDataKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:BridgeSettingsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:BridgeStateKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:ConnectionConfigKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:CustomDnsOptionsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:CustomListKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:CustomListSettingsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:CustomRelaySettingsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:DaemonEventKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:DefaultDnsOptionsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:DeviceEventKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:DeviceKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:DeviceListKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:DeviceRemovalKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:DeviceStateKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:DnsOptionsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:EndpointKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:ErrorStateKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:ExcludedProcessKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:ExcludedProcessListKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:GeoIpLocationKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:GeographicLocationConstraintKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:InetNetwork.kt$package net.mullvad.talpid.tun_provider</ID>
+ <ID>PackageNaming:LocationConstraintKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:LocationKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:ManagementInterfaceGrpcKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:ManagementInterfaceKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:NewAccessMethodSettingKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:NormalRelaySettingsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:ObfuscationEndpointKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:ObfuscationSettingsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:OpenVpnEndpointDataKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:OpenVpnEndpointKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:OpenvpnConstraintsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:PortRangeKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:ProxyEndpointKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:PublicKeyKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:QuantumResistantStateKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:RelayKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:RelayListCityKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:RelayListCountryKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:RelayListKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:RelaySettingsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:RemoveDeviceEventKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:SettingsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:ShadowsocksEndpointDataKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:SplitTunnelSettingsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:TransportPortKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:TunConfig.kt$package net.mullvad.talpid.tun_provider</ID>
+ <ID>PackageNaming:TunnelEndpointKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:TunnelMetadataKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:TunnelOptionsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:TunnelStateKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:TunnelStateRelayInfoKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:UUIDKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:Udp2TcpObfuscationSettingsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:VoucherSubmissionKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:WireguardConstraintsKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:WireguardEndpointDataKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PackageNaming:WireguardRelayEndpointDataKt.kt$package mullvad_daemon.management_interface</ID>
+ <ID>PrintStackTrace:Extensions.kt$ex</ID>
+ <ID>ProtectedMemberInFinalClass:MullvadDaemon.kt$MullvadDaemon$protected var daemonInterfaceAddress = 0L</ID>
+ <ID>ReturnCount:AccountExpiryNotification.kt$AccountExpiryNotification$private fun format(expiry: DateTime, remainingTime: Duration): String</ID>
+ <ID>ReturnCount:RelayNameComparator.kt$RelayNameComparator$private infix fun List&lt;String&gt;.compareWith(other: List&lt;String&gt;): Int</ID>
+ <ID>ReturnCount:TalpidVpnService.kt$TalpidVpnService$private fun createTun(config: TunConfig): CreateTunResult</ID>
+ <ID>TooGenericExceptionThrown:ChangelogDestination.kt$ChangelogDestination$throw RuntimeException("'changeLog' argument is mandatory, but was not present!")</ID>
+ <ID>TooGenericExceptionThrown:DeviceListDestination.kt$DeviceListDestination$throw RuntimeException("'accountToken' argument is mandatory, but was not present!")</ID>
+ <ID>TooGenericExceptionThrown:PaymentDestination.kt$PaymentDestination$throw RuntimeException("'productId' argument is mandatory, but was not present!")</ID>
+ <ID>TooGenericExceptionThrown:RemoveDeviceConfirmationDialogDestination.kt$RemoveDeviceConfirmationDialogDestination$throw RuntimeException("'device' argument is mandatory, but was not present!")</ID>
+ <ID>TooGenericExceptionThrown:WireguardCustomPortDialogDestination.kt$WireguardCustomPortDialogDestination$throw RuntimeException("'navArg' argument is mandatory, but was not present!")</ID>
+ <ID>TooGenericExceptionThrown:WireguardPortInfoDialogDestination.kt$WireguardPortInfoDialogDestination$throw RuntimeException("'argument' argument is mandatory, but was not present!")</ID>
+ <ID>TooManyFunctions:DaemonEventKt.kt$DaemonEventKt$Dsl</ID>
+ <ID>TooManyFunctions:GeoIpLocationKt.kt$GeoIpLocationKt$Dsl</ID>
+ <ID>TooManyFunctions:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt$ManagementServiceCoroutineImplBase : AbstractCoroutineServerImpl</ID>
+ <ID>TooManyFunctions:ManagementInterfaceGrpcKt.kt$ManagementServiceGrpcKt$ManagementServiceCoroutineStub : AbstractCoroutineStub</ID>
+ <ID>TooManyFunctions:MullvadDaemon.kt$MullvadDaemon</ID>
+ <ID>TooManyFunctions:MullvadVpnService.kt$MullvadVpnService : TalpidVpnService</ID>
+ <ID>TooManyFunctions:NormalRelaySettingsKt.kt$NormalRelaySettingsKt$Dsl</ID>
+ <ID>TooManyFunctions:RelayKt.kt$RelayKt$Dsl</ID>
+ <ID>TooManyFunctions:SettingsKt.kt$SettingsKt$Dsl</ID>
+ <ID>TooManyFunctions:VpnSettingsViewModel.kt$VpnSettingsViewModel : ViewModel</ID>
+ <ID>TooManyFunctions:WireguardEndpointDataKt.kt$WireguardEndpointDataKt$Dsl</ID>
+ <ID>TopLevelPropertyNaming:OutOfTimeUseCase.kt$const val accountRefreshIntervalMillis = 60L * 1000L // 1 minute</ID>
+ <ID>TopLevelPropertyNaming:OutOfTimeUseCase.kt$const val bufferTimeMillis = 60L * 1000L // 1 minute</ID>
+ <ID>UnusedParameter:MullvadFileProvider.kt$shareTitle: String</ID>
+ <ID>UnusedParameter:SimpleMullvadHttpClient.kt$SimpleMullvadHttpClient$body: JSONArray? = null</ID>
+ <ID>UnusedParameter:VpnSettingsScreen.kt$navigateUdp2TcpInfo: () -&gt; Unit = {}</ID>
+ <ID>UnusedPrivateMember:ConnectivityListener.kt$ConnectivityListener$private fun finalize()</ID>
+ <ID>WildcardImport:Destination.kt$import com.ramcosta.composedestinations.spec.*</ID>
+ <ID>WildcardImport:NavGraphs.kt$import com.ramcosta.composedestinations.spec.*</ID>
+ <ID>WildcardImport:NavGraphs.kt$import net.mullvad.mullvadvpn.compose.destinations.*</ID>
+ <ID>WildcardImport:SingleModuleExtensions.kt$import com.ramcosta.composedestinations.spec.*</ID>
+ <ID>WildcardImport:SingleModuleExtensions.kt$import net.mullvad.mullvadvpn.compose.destinations.*</ID>
+ </CurrentIssues>
+</SmellBaseline>
diff --git a/android/config/detekt.yml b/android/config/detekt.yml
new file mode 100644
index 0000000000..d6444acd7f
--- /dev/null
+++ b/android/config/detekt.yml
@@ -0,0 +1,910 @@
+build:
+ maxIssues: 0
+ excludeCorrectable: false
+ weights:
+ # complexity: 2
+ # LongParameterList: 1
+ # style: 1
+ # comments: 1
+
+config:
+ validation: true
+ warningsAsErrors: false
+ checkExhaustiveness: false
+ # when writing own rules with new properties, exclude the property path e.g.: 'my_rule_set,.*>.*>[my_property]'
+ excludes: ''
+
+processors:
+ active: true
+ exclude:
+ - 'DetektProgressListener'
+ # - 'KtFileCountProcessor'
+ # - 'PackageCountProcessor'
+ # - 'ClassCountProcessor'
+ # - 'FunctionCountProcessor'
+ # - 'PropertyCountProcessor'
+ # - 'ProjectComplexityProcessor'
+ # - 'ProjectCognitiveComplexityProcessor'
+ # - 'ProjectLLOCProcessor'
+ # - 'ProjectCLOCProcessor'
+ # - 'ProjectLOCProcessor'
+ # - 'ProjectSLOCProcessor'
+ # - 'LicenseHeaderLoaderExtension'
+
+console-reports:
+ active: true
+ exclude:
+ - 'ProjectStatisticsReport'
+ - 'ComplexityReport'
+ - 'NotificationReport'
+ - 'FindingsReport'
+ - 'FileBasedFindingsReport'
+ # - 'LiteFindingsReport'
+
+output-reports:
+ active: true
+ exclude:
+ - 'TxtOutputReport'
+ - 'XmlOutputReport'
+ - 'MdOutputReport'
+ - 'SarifOutputReport'
+ - 'sarif'
+
+comments:
+ active: true
+ AbsentOrWrongFileLicense:
+ active: false
+ licenseTemplateFile: 'license.template'
+ licenseTemplateIsRegex: false
+ CommentOverPrivateFunction:
+ active: false
+ CommentOverPrivateProperty:
+ active: false
+ DeprecatedBlockTag:
+ active: false
+ EndOfSentenceFormat:
+ active: false
+ endOfSentenceFormat: '([.?!][ \t\n\r\f<])|([.?!:]$)'
+ KDocReferencesNonPublicProperty:
+ active: false
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ OutdatedDocumentation:
+ active: false
+ matchTypeParameters: true
+ matchDeclarationsOrder: true
+ allowParamOnConstructorProperties: false
+ UndocumentedPublicClass:
+ active: false
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ searchInNestedClass: true
+ searchInInnerClass: true
+ searchInInnerObject: true
+ searchInInnerInterface: true
+ searchInProtectedClass: false
+ UndocumentedPublicFunction:
+ active: false
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ searchProtectedFunction: false
+ UndocumentedPublicProperty:
+ active: false
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ searchProtectedProperty: false
+
+complexity:
+ active: true
+ CognitiveComplexMethod:
+ active: false
+ threshold: 15
+ ComplexCondition:
+ active: true
+ threshold: 4
+ ComplexInterface:
+ active: false
+ threshold: 10
+ includeStaticDeclarations: false
+ includePrivateDeclarations: false
+ ignoreOverloaded: false
+ CyclomaticComplexMethod:
+ active: true
+ threshold: 15
+ ignoreSingleWhenExpression: false
+ ignoreSimpleWhenEntries: false
+ ignoreNestingFunctions: false
+ nestingFunctions:
+ - 'also'
+ - 'apply'
+ - 'forEach'
+ - 'isNotNull'
+ - 'ifNull'
+ - 'let'
+ - 'run'
+ - 'use'
+ - 'with'
+ LabeledExpression:
+ active: false
+ ignoredLabels: []
+ LargeClass:
+ active: true
+ threshold: 600
+ LongMethod:
+ active: true
+ threshold: 80
+ LongParameterList:
+ active: true
+ functionThreshold: 15
+ constructorThreshold: 10
+ ignoreDefaultParameters: true
+ ignoreDataClasses: true
+ ignoreAnnotatedParameter: []
+ MethodOverloading:
+ active: false
+ threshold: 6
+ NamedArguments:
+ active: false
+ threshold: 3
+ ignoreArgumentsMatchingNames: false
+ NestedBlockDepth:
+ active: true
+ threshold: 4
+ NestedScopeFunctions:
+ active: false
+ threshold: 1
+ functions:
+ - 'kotlin.apply'
+ - 'kotlin.run'
+ - 'kotlin.with'
+ - 'kotlin.let'
+ - 'kotlin.also'
+ ReplaceSafeCallChainWithRun:
+ active: false
+ StringLiteralDuplication:
+ active: false
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ threshold: 3
+ ignoreAnnotation: true
+ excludeStringsWithLessThan5Characters: true
+ ignoreStringsRegex: '$^'
+ TooManyFunctions:
+ # Configuration maybe should change when this has been merged: https://github.com/detekt/detekt/issues/6516
+ active: true
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ thresholdInFiles: 30
+ thresholdInClasses: 14
+ thresholdInInterfaces: 14
+ thresholdInObjects: 14
+ thresholdInEnums: 14
+ ignoreDeprecated: false
+ ignorePrivate: false
+ ignoreOverridden: false
+
+coroutines:
+ active: true
+ GlobalCoroutineUsage:
+ active: false
+ InjectDispatcher:
+ active: true
+ dispatcherNames:
+ - 'IO'
+ - 'Default'
+ - 'Unconfined'
+ RedundantSuspendModifier:
+ active: true
+ SleepInsteadOfDelay:
+ active: true
+ SuspendFunSwallowedCancellation:
+ active: false
+ SuspendFunWithCoroutineScopeReceiver:
+ active: false
+ SuspendFunWithFlowReturnType:
+ active: true
+
+empty-blocks:
+ active: true
+ EmptyCatchBlock:
+ active: true
+ allowedExceptionNameRegex: '_|(ignore|expected).*'
+ EmptyClassBlock:
+ active: true
+ EmptyDefaultConstructor:
+ active: true
+ EmptyDoWhileBlock:
+ active: true
+ EmptyElseBlock:
+ active: true
+ EmptyFinallyBlock:
+ active: true
+ EmptyForBlock:
+ active: true
+ EmptyFunctionBlock:
+ active: true
+ ignoreOverridden: false
+ EmptyIfBlock:
+ active: true
+ EmptyInitBlock:
+ active: true
+ EmptyKtFile:
+ active: true
+ EmptySecondaryConstructor:
+ active: true
+ EmptyTryBlock:
+ active: true
+ EmptyWhenBlock:
+ active: true
+ EmptyWhileBlock:
+ active: true
+
+exceptions:
+ active: true
+ ExceptionRaisedInUnexpectedLocation:
+ active: true
+ methodNames:
+ - 'equals'
+ - 'finalize'
+ - 'hashCode'
+ - 'toString'
+ InstanceOfCheckForException:
+ active: true
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ NotImplementedDeclaration:
+ active: false
+ ObjectExtendsThrowable:
+ active: false
+ PrintStackTrace:
+ active: true
+ RethrowCaughtException:
+ active: true
+ ReturnFromFinally:
+ active: true
+ ignoreLabeled: false
+ SwallowedException:
+ active: false
+ ignoredExceptionTypes:
+ - 'InterruptedException'
+ - 'MalformedURLException'
+ - 'NumberFormatException'
+ - 'ParseException'
+ allowedExceptionNameRegex: '_|(ignore|expected).*'
+ ThrowingExceptionFromFinally:
+ active: true
+ ThrowingExceptionInMain:
+ active: false
+ ThrowingExceptionsWithoutMessageOrCause:
+ active: true
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ exceptions:
+ - 'ArrayIndexOutOfBoundsException'
+ - 'Exception'
+ - 'IllegalArgumentException'
+ - 'IllegalMonitorStateException'
+ - 'IllegalStateException'
+ - 'IndexOutOfBoundsException'
+ - 'NullPointerException'
+ - 'RuntimeException'
+ - 'Throwable'
+ ThrowingNewInstanceOfSameException:
+ active: true
+ TooGenericExceptionCaught:
+ active: true
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ exceptionNames:
+ - 'ArrayIndexOutOfBoundsException'
+ - 'Error'
+ - 'Exception'
+ - 'IllegalMonitorStateException'
+ - 'IndexOutOfBoundsException'
+ - 'NullPointerException'
+ - 'RuntimeException'
+ - 'Throwable'
+ allowedExceptionNameRegex: '_|(ignore|expected).*'
+ TooGenericExceptionThrown:
+ active: true
+ exceptionNames:
+ - 'Error'
+ - 'Exception'
+ - 'RuntimeException'
+ - 'Throwable'
+
+naming:
+ active: true
+ BooleanPropertyNaming:
+ active: false
+ allowedPattern: '^(is|has|are)'
+ ClassNaming:
+ active: true
+ classPattern: '[A-Z][a-zA-Z0-9]*'
+ ConstructorParameterNaming:
+ active: true
+ parameterPattern: '[a-z][A-Za-z0-9]*'
+ privateParameterPattern: '[a-z][A-Za-z0-9]*'
+ excludeClassPattern: '$^'
+ EnumNaming:
+ active: true
+ enumEntryPattern: '[A-Z][_a-zA-Z0-9]*'
+ ForbiddenClassName:
+ active: false
+ forbiddenName: []
+ FunctionMaxLength:
+ active: false
+ maximumFunctionNameLength: 30
+ FunctionMinLength:
+ active: false
+ minimumFunctionNameLength: 3
+ FunctionNaming:
+ active: true
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ functionPattern: '[a-z][a-zA-Z0-9]*'
+ excludeClassPattern: '$^'
+ ignoreAnnotated: ['Composable']
+ FunctionParameterNaming:
+ active: true
+ parameterPattern: '[a-z][A-Za-z0-9]*'
+ excludeClassPattern: '$^'
+ InvalidPackageDeclaration:
+ active: true
+ rootPackage: ''
+ requireRootInDeclaration: false
+ LambdaParameterNaming:
+ active: false
+ parameterPattern: '[a-z][A-Za-z0-9]*|_'
+ MatchingDeclarationName:
+ active: true
+ mustBeFirst: true
+ MemberNameEqualsClassName:
+ active: true
+ ignoreOverridden: true
+ NoNameShadowing:
+ active: true
+ NonBooleanPropertyPrefixedWithIs:
+ active: false
+ ObjectPropertyNaming:
+ active: true
+ constantPattern: '[A-Za-z][_A-Za-z0-9]*'
+ propertyPattern: '[A-Za-z][_A-Za-z0-9]*'
+ privatePropertyPattern: '(_)?[A-Za-z][_A-Za-z0-9]*'
+ PackageNaming:
+ active: true
+ packagePattern: '[a-z]+(\.[a-z][A-Za-z0-9]*)*'
+ TopLevelPropertyNaming:
+ active: true
+ constantPattern: '[A-Z][_A-Za-z0-9]*'
+ propertyPattern: '[A-Za-z][_A-Za-z0-9]*'
+ privatePropertyPattern: '_?[A-Za-z][_A-Za-z0-9]*'
+ VariableMaxLength:
+ active: false
+ maximumVariableNameLength: 64
+ VariableMinLength:
+ active: false
+ minimumVariableNameLength: 1
+ VariableNaming:
+ active: true
+ variablePattern: '[a-z][A-Za-z0-9]*'
+ privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*'
+ excludeClassPattern: '$^'
+
+performance:
+ active: true
+ ArrayPrimitive:
+ active: true
+ CouldBeSequence:
+ active: false
+ threshold: 3
+ ForEachOnRange:
+ active: true
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ SpreadOperator:
+ active: true
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ UnnecessaryPartOfBinaryExpression:
+ active: false
+ UnnecessaryTemporaryInstantiation:
+ active: true
+
+potential-bugs:
+ active: true
+ AvoidReferentialEquality:
+ active: true
+ forbiddenTypePatterns:
+ - 'kotlin.String'
+ CastNullableToNonNullableType:
+ active: false
+ CastToNullableType:
+ active: false
+ Deprecation:
+ active: false
+ DontDowncastCollectionTypes:
+ active: false
+ DoubleMutabilityForCollection:
+ active: true
+ mutableTypes:
+ - 'kotlin.collections.MutableList'
+ - 'kotlin.collections.MutableMap'
+ - 'kotlin.collections.MutableSet'
+ - 'java.util.ArrayList'
+ - 'java.util.LinkedHashSet'
+ - 'java.util.HashSet'
+ - 'java.util.LinkedHashMap'
+ - 'java.util.HashMap'
+ ElseCaseInsteadOfExhaustiveWhen:
+ active: false
+ ignoredSubjectTypes: []
+ EqualsAlwaysReturnsTrueOrFalse:
+ active: true
+ EqualsWithHashCodeExist:
+ active: true
+ ExitOutsideMain:
+ active: false
+ ExplicitGarbageCollectionCall:
+ active: true
+ HasPlatformType:
+ active: true
+ IgnoredReturnValue:
+ active: true
+ restrictToConfig: true
+ returnValueAnnotations:
+ - 'CheckResult'
+ - '*.CheckResult'
+ - 'CheckReturnValue'
+ - '*.CheckReturnValue'
+ ignoreReturnValueAnnotations:
+ - 'CanIgnoreReturnValue'
+ - '*.CanIgnoreReturnValue'
+ returnValueTypes:
+ - 'kotlin.sequences.Sequence'
+ - 'kotlinx.coroutines.flow.*Flow'
+ - 'java.util.stream.*Stream'
+ ignoreFunctionCall: []
+ ImplicitDefaultLocale:
+ active: true
+ ImplicitUnitReturnType:
+ active: false
+ allowExplicitReturnType: true
+ InvalidRange:
+ active: true
+ IteratorHasNextCallsNextMethod:
+ active: true
+ IteratorNotThrowingNoSuchElementException:
+ active: true
+ LateinitUsage:
+ active: false
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ ignoreOnClassesPattern: ''
+ MapGetWithNotNullAssertionOperator:
+ active: true
+ MissingPackageDeclaration:
+ active: false
+ excludes: ['**/*.kts']
+ NullCheckOnMutableProperty:
+ active: false
+ NullableToStringCall:
+ active: false
+ PropertyUsedBeforeDeclaration:
+ active: false
+ UnconditionalJumpStatementInLoop:
+ active: false
+ UnnecessaryNotNullCheck:
+ active: false
+ UnnecessaryNotNullOperator:
+ active: true
+ UnnecessarySafeCall:
+ active: true
+ UnreachableCatchBlock:
+ active: true
+ UnreachableCode:
+ active: true
+ UnsafeCallOnNullableType:
+ active: true
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ UnsafeCast:
+ active: true
+ UnusedUnaryOperator:
+ active: true
+ UselessPostfixExpression:
+ active: true
+ WrongEqualsTypeParameter:
+ active: true
+
+style:
+ active: true
+ AlsoCouldBeApply:
+ active: false
+ BracesOnIfStatements:
+ active: false
+ singleLine: 'never'
+ multiLine: 'always'
+ BracesOnWhenStatements:
+ active: false
+ singleLine: 'necessary'
+ multiLine: 'consistent'
+ CanBeNonNullable:
+ active: false
+ CascadingCallWrapping:
+ active: false
+ includeElvis: true
+ ClassOrdering:
+ active: false
+ CollapsibleIfStatements:
+ active: false
+ DataClassContainsFunctions:
+ active: false
+ conversionFunctionPrefix:
+ - 'to'
+ allowOperators: false
+ DataClassShouldBeImmutable:
+ active: false
+ DestructuringDeclarationWithTooManyEntries:
+ active: true
+ maxDestructuringEntries: 3
+ ignoreAnnotated: ['Composable']
+ DoubleNegativeLambda:
+ active: false
+ negativeFunctions:
+ - reason: 'Use `takeIf` instead.'
+ value: 'takeUnless'
+ - reason: 'Use `all` instead.'
+ value: 'none'
+ negativeFunctionNameParts:
+ - 'not'
+ - 'non'
+ EqualsNullCall:
+ active: true
+ EqualsOnSignatureLine:
+ active: false
+ ExplicitCollectionElementAccessMethod:
+ active: false
+ ExplicitItLambdaParameter:
+ active: true
+ ExpressionBodySyntax:
+ active: false
+ includeLineWrapping: false
+ ForbiddenAnnotation:
+ active: false
+ annotations:
+ - reason: 'it is a java annotation. Use `Suppress` instead.'
+ value: 'java.lang.SuppressWarnings'
+ - reason: 'it is a java annotation. Use `kotlin.Deprecated` instead.'
+ value: 'java.lang.Deprecated'
+ - reason: 'it is a java annotation. Use `kotlin.annotation.MustBeDocumented` instead.'
+ value: 'java.lang.annotation.Documented'
+ - reason: 'it is a java annotation. Use `kotlin.annotation.Target` instead.'
+ value: 'java.lang.annotation.Target'
+ - reason: 'it is a java annotation. Use `kotlin.annotation.Retention` instead.'
+ value: 'java.lang.annotation.Retention'
+ - reason: 'it is a java annotation. Use `kotlin.annotation.Repeatable` instead.'
+ value: 'java.lang.annotation.Repeatable'
+ - reason: 'Kotlin does not support @Inherited annotation, see https://youtrack.jetbrains.com/issue/KT-22265'
+ value: 'java.lang.annotation.Inherited'
+ ForbiddenComment:
+ active: true
+ comments:
+ - reason: 'Forbidden FIXME todo marker in comment, please fix the problem.'
+ value: 'FIXME:'
+ - reason: 'Forbidden STOPSHIP todo marker in comment, please address the problem before shipping the code.'
+ value: 'STOPSHIP:'
+ - reason: 'Forbidden TODO todo marker in comment, please do the changes.'
+ value: 'TODO:'
+ allowedPatterns: ''
+ ForbiddenImport:
+ active: false
+ imports: []
+ forbiddenPatterns: ''
+ ForbiddenMethodCall:
+ active: false
+ methods:
+ - reason: 'print does not allow you to configure the output stream. Use a logger instead.'
+ value: 'kotlin.io.print'
+ - reason: 'println does not allow you to configure the output stream. Use a logger instead.'
+ value: 'kotlin.io.println'
+ ForbiddenSuppress:
+ active: false
+ rules: []
+ ForbiddenVoid:
+ active: true
+ ignoreOverridden: false
+ ignoreUsageInGenerics: false
+ FunctionOnlyReturningConstant:
+ active: true
+ ignoreOverridableFunction: true
+ ignoreActualFunction: true
+ excludedFunctions: []
+ LoopWithTooManyJumpStatements:
+ active: true
+ maxJumpCount: 1
+ MagicNumber:
+ active: true
+ excludes:
+ - '**/test/**'
+ - '**/androidTest/**'
+ - '**/commonTest/**'
+ - '**/jvmTest/**'
+ - '**/androidUnitTest/**'
+ - '**/androidInstrumentedTest/**'
+ - '**/jsTest/**'
+ - '**/iosTest/**'
+ - '**/*.kts'
+ ignoreNumbers:
+ - '-1'
+ - '0'
+ - '1'
+ - '2'
+ ignoreHashCodeFunction: true
+ ignorePropertyDeclaration: true
+ ignoreLocalVariableDeclaration: false
+ ignoreConstantDeclaration: true
+ ignoreCompanionObjectPropertyDeclaration: true
+ ignoreAnnotation: false
+ ignoreNamedArgument: true
+ ignoreEnums: false
+ ignoreRanges: false
+ ignoreExtensionFunctions: true
+ ignoreAnnotated: ['Preview']
+ MandatoryBracesLoops:
+ active: false
+ MaxChainedCallsOnSameLine:
+ active: false
+ maxChainedCalls: 5
+ MaxLineLength:
+ active: true
+ maxLineLength: 120
+ excludePackageStatements: true
+ excludeImportStatements: true
+ excludeCommentStatements: false
+ excludeRawStrings: true
+ MayBeConst:
+ active: true
+ ModifierOrder:
+ active: true
+ MultilineLambdaItParameter:
+ active: false
+ MultilineRawStringIndentation:
+ active: false
+ indentSize: 4
+ trimmingMethods:
+ - 'trimIndent'
+ - 'trimMargin'
+ NestedClassesVisibility:
+ active: true
+ NewLineAtEndOfFile:
+ active: true
+ NoTabs:
+ active: false
+ NullableBooleanCheck:
+ active: false
+ ObjectLiteralToLambda:
+ active: true
+ OptionalAbstractKeyword:
+ active: true
+ OptionalUnit:
+ active: false
+ PreferToOverPairSyntax:
+ active: false
+ ProtectedMemberInFinalClass:
+ active: true
+ RedundantExplicitType:
+ active: false
+ RedundantHigherOrderMapUsage:
+ active: true
+ RedundantVisibilityModifierRule:
+ active: false
+ ReturnCount:
+ active: true
+ max: 2
+ excludedFunctions:
+ - 'equals'
+ excludeLabeled: false
+ excludeReturnFromLambda: true
+ excludeGuardClauses: false
+ SafeCast:
+ active: true
+ SerialVersionUIDInSerializableClass:
+ active: true
+ SpacingBetweenPackageAndImports:
+ active: false
+ StringShouldBeRawString:
+ active: false
+ maxEscapedCharacterCount: 2
+ ignoredCharacters: []
+ ThrowsCount:
+ active: true
+ max: 2
+ excludeGuardClauses: false
+ TrailingWhitespace:
+ active: false
+ TrimMultilineRawString:
+ active: false
+ trimmingMethods:
+ - 'trimIndent'
+ - 'trimMargin'
+ UnderscoresInNumericLiterals:
+ active: false
+ acceptableLength: 4
+ allowNonStandardGrouping: false
+ UnnecessaryAbstractClass:
+ active: true
+ UnnecessaryAnnotationUseSiteTarget:
+ active: false
+ UnnecessaryApply:
+ active: true
+ UnnecessaryBackticks:
+ active: false
+ UnnecessaryBracesAroundTrailingLambda:
+ active: false
+ UnnecessaryFilter:
+ active: true
+ UnnecessaryInheritance:
+ active: true
+ UnnecessaryInnerClass:
+ active: false
+ UnnecessaryLet:
+ active: false
+ UnnecessaryParentheses:
+ active: false
+ allowForUnclearPrecedence: false
+ UntilInsteadOfRangeTo:
+ active: false
+ UnusedImports:
+ active: false
+ UnusedParameter:
+ active: true
+ allowedNames: 'ignored|expected'
+ UnusedPrivateClass:
+ active: true
+ UnusedPrivateMember:
+ active: true
+ allowedNames: ''
+ ignoreAnnotated: ['Preview']
+ UnusedPrivateProperty:
+ active: true
+ allowedNames: '_|ignored|expected|serialVersionUID'
+ UseAnyOrNoneInsteadOfFind:
+ active: true
+ UseArrayLiteralsInAnnotations:
+ active: true
+ UseCheckNotNull:
+ active: true
+ UseCheckOrError:
+ active: true
+ UseDataClass:
+ active: false
+ allowVars: false
+ UseEmptyCounterpart:
+ active: false
+ UseIfEmptyOrIfBlank:
+ active: false
+ UseIfInsteadOfWhen:
+ active: false
+ ignoreWhenContainingVariableDeclaration: false
+ UseIsNullOrEmpty:
+ active: true
+ UseLet:
+ active: false
+ UseOrEmpty:
+ active: true
+ UseRequire:
+ active: true
+ UseRequireNotNull:
+ active: true
+ UseSumOfInsteadOfFlatMapSize:
+ active: false
+ UselessCallOnNotNull:
+ active: true
+ UtilityClassWithPublicConstructor:
+ active: true
+ VarCouldBeVal:
+ active: true
+ ignoreLateinitVar: false
+ WildcardImport:
+ active: true
+ excludeImports:
+ - 'java.util.*'
diff --git a/android/gradle/verification-metadata.xml b/android/gradle/verification-metadata.xml
index 05ce1e2cc1..bd2f256059 100644
--- a/android/gradle/verification-metadata.xml
+++ b/android/gradle/verification-metadata.xml
@@ -1915,6 +1915,14 @@
<sha256 value="edbabcaf6450a4f63eeffb9b6dd31bbf5d0940aed46c9afc14afa78dc2ea9e7e" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="com.beust" name="jcommander" version="1.82">
+ <artifact name="jcommander-1.82.jar">
+ <sha256 value="deeac157c8de6822878d85d0c7bc8467a19cc8484d37788f7804f039dde280b1" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="jcommander-1.82.module">
+ <sha256 value="936a2d8bce0f84da18500f4e119488b93106dbaa83b8462fe996bcd0e1c38b16" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="com.esotericsoftware" name="minlog" version="1.3.1">
<artifact name="minlog-1.3.1.jar">
<sha256 value="5d4d632cfbebfe0a7644501cc303570b691406181bee65e9916b921c767d7c72" origin="Generated by Gradle"/>
@@ -2666,6 +2674,27 @@
<sha256 value="9c17ca630fc6f92a3ad41025eee82a2b6d09cce05b82975daa1b8c10420d8a9e" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="io.github.davidburstrom.contester" name="contester-breakpoint" version="0.2.0">
+ <artifact name="contester-breakpoint-0.2.0.jar">
+ <sha256 value="672cbebb5d45a72b35dd81fd6127e187451bb6fb7fba35315bbdf2f57cfce835" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="contester-breakpoint-0.2.0.module">
+ <sha256 value="2593c5d9f7a60406e6aeace60563fcd923717536fdd27806414297e93d609fe5" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.github.detekt.sarif4k" name="sarif4k" version="0.4.0">
+ <artifact name="sarif4k-0.4.0.module">
+ <sha256 value="f261835e90afc6c6882c2828b13d33ec835d16affd062c666b6d54009f6d7f2c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.github.detekt.sarif4k" name="sarif4k-jvm" version="0.4.0">
+ <artifact name="sarif4k-jvm-0.4.0.jar">
+ <sha256 value="ead041938323b34336138cf43e1875d8aff90b5e7e9411dbede3d201a327f1a7" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="sarif4k-jvm-0.4.0.module">
+ <sha256 value="c988239674f2b7149af0bfc460cd53586ac8b2ccc72530084b205be32a1e3127" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="io.github.java-diff-utils" name="java-diff-utils" version="4.12">
<artifact name="java-diff-utils-4.12.jar">
<sha256 value="9990a2039778f6b4cc94790141c2868864eacee0620c6c459451121a901cd5b5" origin="Generated by Gradle"/>
@@ -2700,6 +2729,198 @@
<sha256 value="aeeee23a3303d811bca8790ea7f25b534314861c03cff36dafdcc2180969eb97" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-api" version="1.23.4">
+ <artifact name="detekt-api-1.23.4.jar">
+ <sha256 value="462ed6bd2154b0f329139879345a9d0d4bd71eece4ad8b36ca6058d44181acb4" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-api-1.23.4.module">
+ <sha256 value="83c6eb15c588e72f5062a0cc671f21f901fee5d67aeca992f32081737c50ca27" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-cli" version="1.23.4">
+ <artifact name="detekt-cli-1.23.4.jar">
+ <sha256 value="1dc2b4455cd7c922597ec1db6e642ded79c301e37ff3e74f8ea6c3368a377ae7" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-cli-1.23.4.module">
+ <sha256 value="609132237d038ba1d69c8afa6dad145083d42c0a21176d1eb8722b78a0da360a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-core" version="1.23.4">
+ <artifact name="detekt-core-1.23.4.jar">
+ <sha256 value="4158105746b9190b1a6496e10b48a4d4854e710f6a190f2018ac2a77d2ef67b1" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-core-1.23.4.module">
+ <sha256 value="8f284e8f8d2b823c3e81e347e4fe279eb11b9b8bf9b30111762ef753ed9c817d" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-gradle-plugin" version="1.23.4">
+ <artifact name="detekt-gradle-plugin-1.23.4.jar">
+ <sha256 value="1dee221cfc8638593814cec72cf15741413fee931d1eb6fb71b89878bfbcc3b9" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-gradle-plugin-1.23.4.module">
+ <sha256 value="4858355f12f5eaaf5626a9b681544bde1056059c4f60b6d37c3a4d637dea8be9" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-metrics" version="1.23.4">
+ <artifact name="detekt-metrics-1.23.4.jar">
+ <sha256 value="d5210e1f870d95ac2cea2a3241daafed103652442bb77cb8ce2732a90b869cbe" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-metrics-1.23.4.module">
+ <sha256 value="f549ad6e3487dd41ea0e0d89f752c858b1f2ae77e85a75afe7efbf9638a834ac" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-parser" version="1.23.4">
+ <artifact name="detekt-parser-1.23.4.jar">
+ <sha256 value="5618d9ee63b9357d749da6dd917ab2eb5d5abcb9a58cc02696d0ee7d3e7939fe" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-parser-1.23.4.module">
+ <sha256 value="75308c557cc41c706c590fb6f383177514d51258294a35b01acf48b0f34426bf" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-psi-utils" version="1.23.4">
+ <artifact name="detekt-psi-utils-1.23.4.jar">
+ <sha256 value="e2cd6e5ea4a3897f691733121c452b1df966ece2d4b8b1b8a0995aa8bf9e6eda" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-psi-utils-1.23.4.module">
+ <sha256 value="696bf50e5812625478ccd6a2e5618ab27156c19eee8a72152edd83ada2da7828" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-report-html" version="1.23.4">
+ <artifact name="detekt-report-html-1.23.4.jar">
+ <sha256 value="562172d8d6dd00f3cc35392d74f3f272bf403523e8961405f688518bbaf9013a" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-report-html-1.23.4.module">
+ <sha256 value="94c362664bc0826464b9be38e4941c0a11692af74169c4e7c197bbde690845fe" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-report-md" version="1.23.4">
+ <artifact name="detekt-report-md-1.23.4.jar">
+ <sha256 value="3ff733742fb4609f0dedf1dee998bacd5026c28a44ebede15c803fffa28b4f32" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-report-md-1.23.4.module">
+ <sha256 value="ce451b2e7703c05d7ec1841791d553282805369bb661973610afc3812bf8c4c2" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-report-sarif" version="1.23.4">
+ <artifact name="detekt-report-sarif-1.23.4.jar">
+ <sha256 value="93a4cd5915b7d8668c2838be27ce10755beb120212c40293b5cdb3f52818b4c9" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-report-sarif-1.23.4.module">
+ <sha256 value="477f143b4b59746edaa8d73217b777c216e188df1788c7a522aa12e846c88815" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-report-txt" version="1.23.4">
+ <artifact name="detekt-report-txt-1.23.4.jar">
+ <sha256 value="7ac54cc44d367c8d309d49e66f65a686f8ac69df89d9253f6aa414c5b06f9d65" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-report-txt-1.23.4.module">
+ <sha256 value="d438f04816525e7fdcf775d5201208b12c40d03228fe9c7233d92f9a63b6c1ad" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-report-xml" version="1.23.4">
+ <artifact name="detekt-report-xml-1.23.4.jar">
+ <sha256 value="643393d6bf4c8c640e421f1266402b76877490ddcd304f5eefe5bc91c5fcef28" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-report-xml-1.23.4.module">
+ <sha256 value="750a356c3e079d9ee40aff9df548ebe7dc05fe088396ddcc7bf92d5044e02f33" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-rules" version="1.23.4">
+ <artifact name="detekt-rules-1.23.4.jar">
+ <sha256 value="9cd96d232a6b26e0ed93b82fcec709a4855328d0faed5841841d7671aa418037" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-rules-1.23.4.module">
+ <sha256 value="cda79a06c3587795121ac7f034b2c1113730fad31df9ae9ab91bcadf5f604bf0" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-complexity" version="1.23.4">
+ <artifact name="detekt-rules-complexity-1.23.4.jar">
+ <sha256 value="8e728e1183cb4f6d09681718590cb1b4cd1087dc93e53625dc68e9b5c7f7a35b" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-rules-complexity-1.23.4.module">
+ <sha256 value="d081f12bb4e36b0c0199f3b6c3d5d906eb85c58774f353de801cec96d4ad0c8f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-coroutines" version="1.23.4">
+ <artifact name="detekt-rules-coroutines-1.23.4.jar">
+ <sha256 value="01be9f68131b770722a9764808742a909f4d2c2b1019cec019ce1bda8ef240c2" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-rules-coroutines-1.23.4.module">
+ <sha256 value="da82ad40e8d0a5a3231290a251f761c4db567c8c6886d9722e18191f6721e215" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-documentation" version="1.23.4">
+ <artifact name="detekt-rules-documentation-1.23.4.jar">
+ <sha256 value="4ae205a1967a79b63238f8f889bda8b13c35c29687bf316cc136b7c34d8c2f8d" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-rules-documentation-1.23.4.module">
+ <sha256 value="0bc48dcc0f138870a11f496c0a30823c0674f797fb5dd22cb8a13ffbefb91f29" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-empty" version="1.23.4">
+ <artifact name="detekt-rules-empty-1.23.4.jar">
+ <sha256 value="e6f7c6103a581d4f06e161a8f57710e0d5adc3ec4fa7ad737b2d7a03b8d331cd" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-rules-empty-1.23.4.module">
+ <sha256 value="84f0571853b8f39b314bf909d6dd5eae4e4b648e93cc8297a45c744bcc838916" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-errorprone" version="1.23.4">
+ <artifact name="detekt-rules-errorprone-1.23.4.jar">
+ <sha256 value="c732974bc034b82b9517acc331aa9d2a823d72c52a060f520e1eff9f50f44f3f" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-rules-errorprone-1.23.4.module">
+ <sha256 value="1c19f471e6518378a5ff7a08e0176eb3042c26400e09e567e7132ac56e235bb4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-exceptions" version="1.23.4">
+ <artifact name="detekt-rules-exceptions-1.23.4.jar">
+ <sha256 value="dc96df88c5121eb4fcaf732c777bdfdfb3ae629698e464bbd65603532533f485" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-rules-exceptions-1.23.4.module">
+ <sha256 value="54557951d8f27a57fe6079e5f19823c78dbf0a430cabf1cdc32e82ee77ecb287" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-naming" version="1.23.4">
+ <artifact name="detekt-rules-naming-1.23.4.jar">
+ <sha256 value="767598b56c6dc1216f462233bb77163ee73e3c9cecb262692999f7d2d792845c" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-rules-naming-1.23.4.module">
+ <sha256 value="2a46d3391fcbc13544bafa81273d19b226083e6f92c36233b421bfb5b8000552" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-performance" version="1.23.4">
+ <artifact name="detekt-rules-performance-1.23.4.jar">
+ <sha256 value="1c4dadb00cda6bb669d1c76e6a7ad73251c3e59861a7eb5bd9562252595ae1f7" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-rules-performance-1.23.4.module">
+ <sha256 value="377ef3db81c58b7070577aadba56a1aba1daf0a288d8bb67cc597eefd91a897f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-rules-style" version="1.23.4">
+ <artifact name="detekt-rules-style-1.23.4.jar">
+ <sha256 value="6b1f98944111268c4670d0b7937e97290837bce33220f199eb7ae496b4631026" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-rules-style-1.23.4.module">
+ <sha256 value="44f5261052c5610ab3265514cd1bfe20e0c10744ecddae0d502c3dfd31ffbd5e" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-tooling" version="1.23.4">
+ <artifact name="detekt-tooling-1.23.4.jar">
+ <sha256 value="fe75f71d46c09aefc3a540c104a62b969d7da6830252efce8f69453ca942cff4" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-tooling-1.23.4.module">
+ <sha256 value="f64652abc4a717274cd1421c1156fd1c438b57d247cbcc1c209312285d49d451" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="io.gitlab.arturbosch.detekt" name="detekt-utils" version="1.23.4">
+ <artifact name="detekt-utils-1.23.4.jar">
+ <sha256 value="6f25ceb3bb1d3a45da2907fc0b71d1dcd075343de024d75f33bcd938368cb200" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="detekt-utils-1.23.4.module">
+ <sha256 value="5be0fd6355d0e9539899cbb0ff733906de36a64897255b86fde6880e8ad1d871" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="io.grpc" name="grpc-api" version="1.45.1">
<artifact name="grpc-api-1.45.1.jar">
<sha256 value="dc381fe018fb10bba8cc66f98db1050a70cee49a8270017c22ec6f77b10f13e5" origin="Generated by Gradle"/>
@@ -3354,6 +3575,11 @@
<sha256 value="a25024fe5da8440de01af045c4fcb954a22f078738ec02616085f0cfc57b2702" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="org.jetbrains.kotlin" name="kotlin-compiler-embeddable" version="1.9.21">
+ <artifact name="kotlin-compiler-embeddable-1.9.21.jar">
+ <sha256 value="46904b3d3f516560a48e0d93d9c7bfc63650b22d9f68f7a37eab5e5c5f3f785a" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="org.jetbrains.kotlin" name="kotlin-compiler-runner" version="1.8.20">
<artifact name="kotlin-compiler-runner-1.8.20.jar">
<sha256 value="97e43499428f66889bc935c8bd9a836875b75178c61fd396603ce41d6db2f748" origin="Generated by Gradle"/>
@@ -3389,6 +3615,11 @@
<sha256 value="a939cb5d6ee2a758c9285bd9f3286824beabe12d9a4b5f49f784d0bca329dea5" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="org.jetbrains.kotlin" name="kotlin-daemon-embeddable" version="1.9.21">
+ <artifact name="kotlin-daemon-embeddable-1.9.21.jar">
+ <sha256 value="01152ffb41b076e9c55083c513e1ef05f303cd5a95cedffcb89e124e340df11e" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="org.jetbrains.kotlin" name="kotlin-gradle-plugin" version="1.8.20">
<artifact name="kotlin-gradle-plugin-1.8.20-gradle76.jar">
<sha256 value="4445babba17729ecadd13ffc5e6e84bf988f52c4da4dfde39450d4310fd8c103" origin="Generated by Gradle"/>
@@ -3561,6 +3792,11 @@
<sha256 value="49b66f9a89d50fd2954c2e8aeac80e4f488b0a09322a25efad6261576713dc0f" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="org.jetbrains.kotlin" name="kotlin-reflect" version="1.9.21">
+ <artifact name="kotlin-reflect-1.9.21.jar">
+ <sha256 value="a133e049f0a4e249651582428e166de4dfac9546adf436b6172119255ede510f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="org.jetbrains.kotlin" name="kotlin-sam-with-receiver" version="1.8.20">
<artifact name="kotlin-sam-with-receiver-1.8.20-gradle76.jar">
<sha256 value="731a782a86f68cad94c9dd6df51df040d6f5b9e9c4d454a0dcc7addfd3f7526d" origin="Generated by Gradle"/>
@@ -3589,6 +3825,11 @@
<sha256 value="a26a6256a76f766ab8bacdb409b3f8c940d999712a8e88864252b678d66bab9e" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="org.jetbrains.kotlin" name="kotlin-script-runtime" version="1.9.21">
+ <artifact name="kotlin-script-runtime-1.9.21.jar">
+ <sha256 value="1b1c74d476ffa41985b0b95dbe78ea5052061889f8106f1ae6cb5ee17f323f19" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="org.jetbrains.kotlin" name="kotlin-scripting-common" version="1.8.20">
<artifact name="kotlin-scripting-common-1.8.20.jar">
<sha256 value="a1c6cf4bb49db97a7082bc461acfdf3e163af1b625ab9baa5d7e3e5f9648badc" origin="Generated by Gradle"/>
@@ -4045,6 +4286,40 @@
<sha256 value="505008736a6cfab649f81db603eee3b2f828f5d877712a38939efdd5f1fc5170" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-html-jvm" version="0.8.1">
+ <artifact name="kotlinx-html-jvm-0.8.1.jar">
+ <sha256 value="98bda1c78a5028a134ceb25b63f5c130c89349730d35fd47ef7490b6bf0b63b3" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlinx-html-jvm-0.8.1.module">
+ <sha256 value="2e6147bd8326ca47be957230ad2ecb3aee8e194a0afdb73a6776116eed7a4a5f" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core" version="1.4.1">
+ <artifact name="kotlinx-serialization-core-1.4.1.module">
+ <sha256 value="60e581c397ddb9461ec1f1dee5bbb4a23bb7ec7d09b296024196220022aa7090" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core-jvm" version="1.4.1">
+ <artifact name="kotlinx-serialization-core-jvm-1.4.1.jar">
+ <sha256 value="eba7f1c854296e4ce1418fb01360f8f10c5683e7c45aa3472018417a067636f3" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlinx-serialization-core-jvm-1.4.1.module">
+ <sha256 value="73bc94bdd5fc86621509a6715c3fe344904ee7db5806a0c61792ce2356089ee9" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json" version="1.4.1">
+ <artifact name="kotlinx-serialization-json-1.4.1.module">
+ <sha256 value="e9922300aff663e55ecef7d3fca305cb60a14755b1f980d94039e3c1cab645cc" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json-jvm" version="1.4.1">
+ <artifact name="kotlinx-serialization-json-jvm-1.4.1.jar">
+ <sha256 value="af604c46737121d4225fdb60ef0e17766a3c94b7c1c9ef76b4e3a5c7733d557e" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="kotlinx-serialization-json-jvm-1.4.1.module">
+ <sha256 value="c8fbfde4b5ee1e41a69175165e839991d1501665a7590e23162326501ac6122c" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="org.jsoup" name="jsoup" version="1.16.1">
<artifact name="jsoup-1.16.1.jar">
<sha256 value="1f115726540ddf71958c14bc517ebfc49cf481e91cd917b0face84f01272e901" origin="Generated by Gradle"/>
@@ -4276,6 +4551,11 @@
<sha256 value="d3ef575e3e4979678dc01bf1dcce51021493b4d11fb7f1be8ad982877c16a1c0" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="org.snakeyaml" name="snakeyaml-engine" version="2.6">
+ <artifact name="snakeyaml-engine-2.6.jar">
+ <sha256 value="2652199af40c9aa2f1782400d2dfbbf4e5226208c4e05ddd4059c3d6d9cd1505" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="org.sonatype.goodies" name="package-url-java" version="1.1.1">
<artifact name="package-url-java-1.1.1.jar">
<sha256 value="15297862342b494a535742fba90ea8a321cd13e1d0dc4c61b7a3b18ce385e1a8" origin="Generated by Gradle"/>
diff --git a/android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepository.kt b/android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepository.kt
index f9239516d9..6b3098fad0 100644
--- a/android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepository.kt
+++ b/android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepository.kt
@@ -131,12 +131,8 @@ class BillingRepository(context: Context) {
val activity = activityProvider()
// Launch the billing flow
billingClient.launchBillingFlow(activity, billingFlowParams)
- } catch (t: Throwable) {
- if (t is BillingException) {
- t.toBillingResult()
- } else {
- throw t
- }
+ } catch (t: BillingException) {
+ t.toBillingResult()
}
}
@@ -150,15 +146,12 @@ class BillingRepository(context: Context) {
.build()
billingClient.queryPurchasesAsync(queryPurchaseHistoryParams)
- } catch (t: Throwable) {
- if (t is BillingException) {
- t.toPurchasesResult()
- } else {
- throw t
- }
+ } catch (t: BillingException) {
+ t.toPurchasesResult()
}
}
+ @Suppress("TooGenericExceptionCaught")
private suspend fun queryProductDetails(productIds: List<String>): ProductDetailsResult {
return try {
ensureConnected()
@@ -174,15 +167,13 @@ class BillingRepository(context: Context) {
params.setProductList(productList)
billingClient.queryProductDetails(params.build())
+ } catch (billingException: BillingException) {
+ ProductDetailsResult(billingException.toBillingResult(), null)
} catch (t: Throwable) {
- if (t is BillingException) {
- return ProductDetailsResult(t.toBillingResult(), null)
- } else {
- return ProductDetailsResult(
- BillingResult.newBuilder().setResponseCode(BillingResponseCode.ERROR).build(),
- null
- )
- }
+ ProductDetailsResult(
+ BillingResult.newBuilder().setResponseCode(BillingResponseCode.ERROR).build(),
+ null
+ )
}
}
}
diff --git a/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/CommonStringExtensions.kt b/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/CommonStringExtensions.kt
index 06a2de9148..536fea3d24 100644
--- a/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/CommonStringExtensions.kt
+++ b/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/CommonStringExtensions.kt
@@ -10,7 +10,9 @@ private const val SPACE_CHAR = ' '
fun String.parseAsDateTime(): DateTime? {
return try {
DateTime.parse(this, DateTimeFormat.forPattern(EXPIRY_FORMAT))
- } catch (ex: Exception) {
+ } catch (ex: IllegalArgumentException) {
+ null
+ } catch (ex: UnsupportedOperationException) {
null
}
}
diff --git a/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlow.kt b/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlow.kt
index 4d60cf4d7b..7b839a3658 100644
--- a/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlow.kt
+++ b/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlow.kt
@@ -27,15 +27,12 @@ class HandlerFlow<T>(looper: Looper, private val extractor: (Message) -> T) :
try {
channel.trySendBlocking(extractedData)
- } catch (exception: Exception) {
- when (exception) {
- is ClosedSendChannelException,
- is CancellationException -> {
- Log.w("mullvad", "Received a message after HandlerFlow was closed", exception)
- removeCallbacksAndMessages(null)
- }
- else -> throw exception
- }
+ } catch (exception: ClosedSendChannelException) {
+ Log.w("mullvad", "Received a message after HandlerFlow was closed", exception)
+ removeCallbacksAndMessages(null)
+ } catch (exception: CancellationException) {
+ Log.w("mullvad", "Received a message after HandlerFlow was cancelled", exception)
+ removeCallbacksAndMessages(null)
}
}
}
diff --git a/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt b/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
index 1d43b6f9f9..94b097fe13 100644
--- a/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
+++ b/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
@@ -141,7 +141,7 @@ open class TalpidVpnService : VpnService() {
return when (address) {
is Inet4Address -> 32
is Inet6Address -> 128
- else -> throw RuntimeException("Invalid IP address (not IPv4 nor IPv6)")
+ else -> throw IllegalArgumentException("Invalid IP address (not IPv4 nor IPv6)")
}
}
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
index 107f5d35fe..52e662c771 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
@@ -296,30 +296,44 @@ class MullvadDaemon(
quantumResistant: QuantumResistantState
)
+ // Used by JNI
+ @Suppress("unused")
private fun notifyAppVersionInfoEvent(appVersionInfo: AppVersionInfo) {
onAppVersionInfoChange?.invoke(appVersionInfo)
}
+ // Used by JNI
+ @Suppress("unused")
private fun notifyRelayListEvent(relayList: RelayList) {
onRelayListChange?.invoke(relayList)
}
+ // Used by JNI
+ @Suppress("unused")
private fun notifySettingsEvent(settings: Settings) {
onSettingsChange.notify(settings)
}
+ // Used by JNI
+ @Suppress("unused")
private fun notifyTunnelStateEvent(event: TunnelState) {
onTunnelStateChange.notify(event)
}
+ // Used by JNI
+ @Suppress("unused")
private fun notifyDaemonStopped() {
onDaemonStopped?.invoke()
}
+ // Used by JNI
+ @Suppress("unused")
private fun notifyDeviceEvent(event: DeviceEvent) {
_deviceStateUpdates.tryEmit(event.newState)
}
+ // Used by JNI
+ @Suppress("unused")
private fun notifyRemoveDeviceEvent(event: RemoveDeviceEvent) {
_deviceListUpdates.tryEmit(DeviceListEvent.Available(event.accountToken, event.newDevices))
}
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
index b0c55540a6..66a77b0d73 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -273,7 +273,7 @@ class MullvadVpnService : TalpidVpnService() {
}
companion object {
- private val TAG = "mullvad"
+ private const val TAG = "mullvad"
init {
System.loadLibrary("mullvad_jni")
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt
index 874b78cab3..9422b6a94e 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/SettingsListener.kt
@@ -8,7 +8,11 @@ import kotlinx.coroutines.channels.actor
import kotlinx.coroutines.channels.trySendBlocking
import net.mullvad.mullvadvpn.lib.ipc.Event
import net.mullvad.mullvadvpn.lib.ipc.Request
-import net.mullvad.mullvadvpn.model.*
+import net.mullvad.mullvadvpn.model.DnsOptions
+import net.mullvad.mullvadvpn.model.ObfuscationSettings
+import net.mullvad.mullvadvpn.model.QuantumResistantState
+import net.mullvad.mullvadvpn.model.RelaySettings
+import net.mullvad.mullvadvpn.model.Settings
import net.mullvad.mullvadvpn.service.MullvadDaemon
import net.mullvad.talpid.util.EventNotifier
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt
index 371e19be7b..634051b2b1 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt
@@ -140,8 +140,8 @@ class AccountExpiryNotification(
}
companion object {
- val NOTIFICATION_ID: Int = 2
+ const val NOTIFICATION_ID: Int = 2
val REMAINING_TIME_FOR_REMINDERS = Duration.standardDays(2)
- val TIME_BETWEEN_CHECKS: Long = 12 /* h */ * 60 /* min */ * 60 /* s */ * 1000 /* ms */
+ const val TIME_BETWEEN_CHECKS: Long = 12 /* h */ * 60 /* min */ * 60 /* s */ * 1000 /* ms */
}
}
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt
index 0c04c09eeb..44a34589d9 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt
@@ -147,6 +147,6 @@ class TunnelStateNotification(val context: Context) {
}
companion object {
- val NOTIFICATION_ID: Int = 1
+ const val NOTIFICATION_ID: Int = 1
}
}
diff --git a/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt b/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt
index 44ca7bcd49..06ffaddcc3 100644
--- a/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt
+++ b/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt
@@ -6,7 +6,7 @@ import com.lemonappdev.konsist.api.ext.list.properties
import com.lemonappdev.konsist.api.verify.assertNot
import org.junit.jupiter.api.Test
-class DataClasses {
+class DataClassTests {
@Test
fun `ensure data classes only use immutable properties`() =
Konsist.scopeFromProject()