diff --git a/.run/Update specs.run.xml b/.run/Update specs.run.xml new file mode 100644 index 0000000..0dd29db --- /dev/null +++ b/.run/Update specs.run.xml @@ -0,0 +1,24 @@ + + + + + + + true + true + false + false + + + \ No newline at end of file diff --git a/demo-project/build.gradle.kts b/demo-project/build.gradle.kts index b11ec6d..65207d0 100644 --- a/demo-project/build.gradle.kts +++ b/demo-project/build.gradle.kts @@ -1,3 +1,12 @@ +import com.github.difflib.DiffUtils +import com.github.difflib.UnifiedDiffUtils + +buildscript { + dependencies { + classpath(libs.diffUtils) + } +} + plugins { base id("io.github.gmazzo.test.aggregation.results") @@ -33,6 +42,49 @@ tasks.jacocoAggregatedCoverageVerification { } } +val aggregatedReportsSpecs = layout.projectDirectory.dir("specs/aggregated-reports") + +val collectExpectedReports by tasks.registering(Sync::class) { + from(tasks.jacocoAggregatedReport) { into("coverage") } + from(tasks.testAggregatedReport) { into("tests") } + into(aggregatedReportsSpecs) +} + +val checkAggregatedReportsContent by tasks.registering(Sync::class) { + from(aggregatedReportsSpecs) { into("expects") } + from(tasks.jacocoAggregatedReport) { into("actual/coverage") } + from(tasks.testAggregatedReport) { into("actual/tests") } + into(temporaryDir) + doLast { + fun File.collect() = walkTopDown() + .filter(File::isFile) + .associateBy { it.toRelativeString(this) } + + val expected = File(temporaryDir, "expects").collect() + val actual = File(temporaryDir, "actual").collect() + val diff = (expected.keys + actual.keys).mapNotNull { + val expectedLines = expected[it]?.readLines().orEmpty() + val actualLines = actual[it]?.readLines().orEmpty() + + when (actualLines) { + expectedLines -> null + else -> UnifiedDiffUtils.generateUnifiedDiff( + "expected:${it}", "actual:${it}", + expectedLines, + DiffUtils.diff(expectedLines, actualLines), + 3 + ) + } + } + check(diff.isEmpty()) { + diff.joinToString( + prefix = "The generated reports are different than the expected ones:\n", + separator = "\n\n\n" + ) + } + } +} + tasks.check { - dependsOn(tasks.jacocoAggregatedCoverageVerification) + dependsOn(tasks.jacocoAggregatedCoverageVerification, checkAggregatedReportsContent) } diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.domain/MyUseCase.html b/demo-project/specs/aggregated-reports/coverage/com.example.domain/MyUseCase.html new file mode 100644 index 0000000..f5e99a6 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.domain/MyUseCase.html @@ -0,0 +1 @@ +MyUseCase

MyUseCase

Source file "com/example/domain/MyUseCase.kt" was not found during generation of report.

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 5100%0 of 0n/a020202
MyUseCase()3100%n/a010101
doSomething()2100%n/a010101
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.domain/index.html b/demo-project/specs/aggregated-reports/coverage/com.example.domain/index.html new file mode 100644 index 0000000..93d985c --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.domain/index.html @@ -0,0 +1 @@ +com.example.domain

com.example.domain

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total0 of 5100%0 of 0n/a02020201
MyUseCase5100%n/a02020201
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.domain/index.source.html b/demo-project/specs/aggregated-reports/coverage/com.example.domain/index.source.html new file mode 100644 index 0000000..3aaee6e --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.domain/index.source.html @@ -0,0 +1 @@ +com.example.domain

com.example.domain

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total0 of 5100%0 of 0n/a02020201
MyUseCase.kt5100%n/a02020201
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObject.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObject.html new file mode 100644 index 0000000..9263f48 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObject.html @@ -0,0 +1 @@ +KMPObject

KMPObject

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a020102
static {...}7100%n/a010101
getPlatform()2100%n/a010101
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObject.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObject.kt.html new file mode 100644 index 0000000..952221e --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObject.kt.html @@ -0,0 +1,8 @@ +KMPObject.kt

KMPObject.kt

package com.example.kmp
+
+object KMPObject {
+
+    val platform = PLATFORM
+
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObjectAndroid.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObjectAndroid.html new file mode 100644 index 0000000..02860e2 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObjectAndroid.html @@ -0,0 +1 @@ +KMPObjectAndroid

KMPObjectAndroid

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a020102
static {...}7100%n/a010101
getPlatform()2100%n/a010101
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObjectAndroid.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObjectAndroid.kt.html new file mode 100644 index 0000000..b4c3d71 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObjectAndroid.kt.html @@ -0,0 +1,8 @@ +KMPObjectAndroid.kt

KMPObjectAndroid.kt

package com.example.kmp
+
+object KMPObjectAndroid {
+
+    val platform = PLATFORM
+
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObjectJVM.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObjectJVM.html new file mode 100644 index 0000000..505d004 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObjectJVM.html @@ -0,0 +1 @@ +KMPObjectJVM

KMPObjectJVM

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a020102
static {...}7100%n/a010101
getPlatform()2100%n/a010101
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObjectJVM.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObjectJVM.kt.html new file mode 100644 index 0000000..28cc77f --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/KMPObjectJVM.kt.html @@ -0,0 +1,8 @@ +KMPObjectJVM.kt

KMPObjectJVM.kt

package com.example.kmp
+
+object KMPObjectJVM {
+
+    val platform = PLATFORM
+
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObj.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObj.html new file mode 100644 index 0000000..1072d7b --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObj.html @@ -0,0 +1 @@ +MoshiObj

MoshiObj

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total21 of 210%0 of 0n/a333333
MoshiObj(String, String)150%n/a113311
getA()30%n/a111111
getB()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObj.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObj.kt.html new file mode 100644 index 0000000..eb9d4b0 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObj.kt.html @@ -0,0 +1,10 @@ +MoshiObj.kt

MoshiObj.kt

package com.example.kmp
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class MoshiObj(
+    val a: String,
+    val b: String,
+)
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjAndroid.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjAndroid.html new file mode 100644 index 0000000..4d35359 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjAndroid.html @@ -0,0 +1 @@ +MoshiObjAndroid

MoshiObjAndroid

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total21 of 210%0 of 0n/a333333
MoshiObjAndroid(String, String)150%n/a113311
getA()30%n/a111111
getB()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjAndroid.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjAndroid.kt.html new file mode 100644 index 0000000..73f8d19 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjAndroid.kt.html @@ -0,0 +1,10 @@ +MoshiObjAndroid.kt

MoshiObjAndroid.kt

package com.example.kmp
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class MoshiObjAndroid(
+    val a: String,
+    val b: String,
+)
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjAndroidJsonAdapter.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjAndroidJsonAdapter.html new file mode 100644 index 0000000..dde45d8 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjAndroidJsonAdapter.html @@ -0,0 +1 @@ +MoshiObjAndroidJsonAdapter

MoshiObjAndroidJsonAdapter

Source file "com/example/kmp/MoshiObjAndroidJsonAdapter.kt" was not found during generation of report.

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total173 of 1730%16 of 160%1313292944
fromJson(JsonReader)760%140%99131311
toJson(JsonWriter, MoshiObjAndroid)370%20%229911
MoshiObjAndroidJsonAdapter(Moshi)350%n/a115511
toString()250%n/a112211
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJVM.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJVM.html new file mode 100644 index 0000000..de9716e --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJVM.html @@ -0,0 +1 @@ +MoshiObjJVM

MoshiObjJVM

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total21 of 210%0 of 0n/a333333
MoshiObjJVM(String, String)150%n/a113311
getA()30%n/a111111
getB()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJVM.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJVM.kt.html new file mode 100644 index 0000000..8c40e9b --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJVM.kt.html @@ -0,0 +1,10 @@ +MoshiObjJVM.kt

MoshiObjJVM.kt

package com.example.kmp
+
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+data class MoshiObjJVM(
+    val a: String,
+    val b: String,
+)
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJVMJsonAdapter.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJVMJsonAdapter.html new file mode 100644 index 0000000..10fb98d --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJVMJsonAdapter.html @@ -0,0 +1 @@ +MoshiObjJVMJsonAdapter

MoshiObjJVMJsonAdapter

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total173 of 1730%16 of 160%1313292944
fromJson(JsonReader)760%140%99131311
toJson(JsonWriter, MoshiObjJVM)370%20%229911
MoshiObjJVMJsonAdapter(Moshi)350%n/a115511
toString()250%n/a112211
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJVMJsonAdapter.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJVMJsonAdapter.kt.html new file mode 100644 index 0000000..f811530 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJVMJsonAdapter.kt.html @@ -0,0 +1,65 @@ +MoshiObjJVMJsonAdapter.kt

MoshiObjJVMJsonAdapter.kt

// Code generated by moshi-kotlin-codegen. Do not edit.
+@file:Suppress("DEPRECATION", "unused", "UNUSED_PARAMETER", "ClassName", "REDUNDANT_PROJECTION",
+    "RedundantExplicitType", "LocalVariableName", "RedundantVisibilityModifier",
+    "PLATFORM_CLASS_MAPPED_TO_KOTLIN", "IMPLICIT_NOTHING_TYPE_ARGUMENT_IN_RETURN_POSITION")
+
+package com.example.kmp
+
+import com.squareup.moshi.JsonAdapter
+import com.squareup.moshi.JsonReader
+import com.squareup.moshi.JsonWriter
+import com.squareup.moshi.Moshi
+import com.squareup.moshi.`internal`.Util
+import java.lang.NullPointerException
+import kotlin.String
+import kotlin.Suppress
+import kotlin.Unit
+import kotlin.collections.emptySet
+import kotlin.text.buildString
+
+public class MoshiObjJVMJsonAdapter(
+  moshi: Moshi,
+) : JsonAdapter<MoshiObjJVM>() {
+  private val options: JsonReader.Options = JsonReader.Options.of("a", "b")
+
+  private val stringAdapter: JsonAdapter<String> = moshi.adapter(String::class.java, emptySet(),
+      "a")
+
+  public override fun toString(): String = buildString(33) {
+      append("GeneratedJsonAdapter(").append("MoshiObjJVM").append(')') }
+
+  public override fun fromJson(reader: JsonReader): MoshiObjJVM {
+    var a: String? = null
+    var b: String? = null
+    reader.beginObject()
+    while (reader.hasNext()) {
+      when (reader.selectName(options)) {
+        0 -> a = stringAdapter.fromJson(reader) ?: throw Util.unexpectedNull("a", "a", reader)
+        1 -> b = stringAdapter.fromJson(reader) ?: throw Util.unexpectedNull("b", "b", reader)
+        -1 -> {
+          // Unknown name, skip it.
+          reader.skipName()
+          reader.skipValue()
+        }
+      }
+    }
+    reader.endObject()
+    return MoshiObjJVM(
+        a = a ?: throw Util.missingProperty("a", "a", reader),
+        b = b ?: throw Util.missingProperty("b", "b", reader)
+    )
+  }
+
+  public override fun toJson(writer: JsonWriter, value_: MoshiObjJVM?): Unit {
+    if (value_ == null) {
+      throw NullPointerException("value_ was null! Wrap in .nullSafe() to write nullable values.")
+    }
+    writer.beginObject()
+    writer.name("a")
+    stringAdapter.toJson(writer, value_.a)
+    writer.name("b")
+    stringAdapter.toJson(writer, value_.b)
+    writer.endObject()
+  }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJsonAdapter.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJsonAdapter.html new file mode 100644 index 0000000..62079fd --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJsonAdapter.html @@ -0,0 +1 @@ +MoshiObjJsonAdapter

MoshiObjJsonAdapter

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total173 of 1730%16 of 160%1313292944
fromJson(JsonReader)760%140%99131311
toJson(JsonWriter, MoshiObj)370%20%229911
MoshiObjJsonAdapter(Moshi)350%n/a115511
toString()250%n/a112211
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJsonAdapter.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJsonAdapter.kt.html new file mode 100644 index 0000000..8ad2c75 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/MoshiObjJsonAdapter.kt.html @@ -0,0 +1,65 @@ +MoshiObjJsonAdapter.kt

MoshiObjJsonAdapter.kt

// Code generated by moshi-kotlin-codegen. Do not edit.
+@file:Suppress("DEPRECATION", "unused", "UNUSED_PARAMETER", "ClassName", "REDUNDANT_PROJECTION",
+    "RedundantExplicitType", "LocalVariableName", "RedundantVisibilityModifier",
+    "PLATFORM_CLASS_MAPPED_TO_KOTLIN", "IMPLICIT_NOTHING_TYPE_ARGUMENT_IN_RETURN_POSITION")
+
+package com.example.kmp
+
+import com.squareup.moshi.JsonAdapter
+import com.squareup.moshi.JsonReader
+import com.squareup.moshi.JsonWriter
+import com.squareup.moshi.Moshi
+import com.squareup.moshi.`internal`.Util
+import java.lang.NullPointerException
+import kotlin.String
+import kotlin.Suppress
+import kotlin.Unit
+import kotlin.collections.emptySet
+import kotlin.text.buildString
+
+public class MoshiObjJsonAdapter(
+  moshi: Moshi,
+) : JsonAdapter<MoshiObj>() {
+  private val options: JsonReader.Options = JsonReader.Options.of("a", "b")
+
+  private val stringAdapter: JsonAdapter<String> = moshi.adapter(String::class.java, emptySet(),
+      "a")
+
+  public override fun toString(): String = buildString(30) {
+      append("GeneratedJsonAdapter(").append("MoshiObj").append(')') }
+
+  public override fun fromJson(reader: JsonReader): MoshiObj {
+    var a: String? = null
+    var b: String? = null
+    reader.beginObject()
+    while (reader.hasNext()) {
+      when (reader.selectName(options)) {
+        0 -> a = stringAdapter.fromJson(reader) ?: throw Util.unexpectedNull("a", "a", reader)
+        1 -> b = stringAdapter.fromJson(reader) ?: throw Util.unexpectedNull("b", "b", reader)
+        -1 -> {
+          // Unknown name, skip it.
+          reader.skipName()
+          reader.skipValue()
+        }
+      }
+    }
+    reader.endObject()
+    return MoshiObj(
+        a = a ?: throw Util.missingProperty("a", "a", reader),
+        b = b ?: throw Util.missingProperty("b", "b", reader)
+    )
+  }
+
+  public override fun toJson(writer: JsonWriter, value_: MoshiObj?): Unit {
+    if (value_ == null) {
+      throw NullPointerException("value_ was null! Wrap in .nullSafe() to write nullable values.")
+    }
+    writer.beginObject()
+    writer.name("a")
+    stringAdapter.toJson(writer, value_.a)
+    writer.name("b")
+    stringAdapter.toJson(writer, value_.b)
+    writer.endObject()
+  }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/Platform.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/Platform.kt.html new file mode 100644 index 0000000..db15709 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/Platform.kt.html @@ -0,0 +1,4 @@ +Platform.kt

Platform.kt

package com.example.kmp
+
+internal expect val PLATFORM: String
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/PlatformKt.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/PlatformKt.html new file mode 100644 index 0000000..7e1f1d6 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/PlatformKt.html @@ -0,0 +1 @@ +PlatformKt

PlatformKt

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 5100%0 of 0n/a020102
static {...}3100%n/a010101
getPLATFORM()2100%n/a010101
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/index.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/index.html new file mode 100644 index 0000000..1c7df3b --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/index.html @@ -0,0 +1 @@ +com.example.kmp

com.example.kmp

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total388 of 4207%32 of 320%32406468142248
MoshiObjAndroidJsonAdapter1730%160%131329294411
MoshiObjJVMJsonAdapter1730%160%131329294411
MoshiObjJVM210%n/a33333311
MoshiObjAndroid210%n/a33333311
KMPObjectAndroid9100%n/a02010201
KMPObject9100%n/a02010201
KMPObjectJVM9100%n/a02010201
PlatformKt5100%n/a02010201
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.kmp/index.source.html b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/index.source.html new file mode 100644 index 0000000..b6f6b8d --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.kmp/index.source.html @@ -0,0 +1 @@ +com.example.kmp

com.example.kmp

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total388 of 4207%32 of 320%32406468142248
MoshiObjAndroidJsonAdapter.kt1730%160%131329294411
MoshiObjJVMJsonAdapter.kt1730%160%131329294411
MoshiObjJVM.kt210%n/a33333311
MoshiObjAndroid.kt210%n/a33333311
KMPObjectAndroid.kt9100%n/a02010201
KMPObjectJVM.kt9100%n/a02010201
KMPObject.kt9100%n/a02010201
Platform.kt5100%n/a02010201
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.databinding/ActivityLoginBinding.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.databinding/ActivityLoginBinding.html new file mode 100644 index 0000000..e8cb481 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.databinding/ActivityLoginBinding.html @@ -0,0 +1 @@ +ActivityLoginBinding

ActivityLoginBinding

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total109 of 1090%10 of 100%1010343455
bind(View)660%80%55202011
ActivityLoginBinding(ConstraintLayout, ConstraintLayout, ProgressBar, Button, EditText, EditText)210%n/a118811
inflate(LayoutInflater, ViewGroup, boolean)140%20%224411
inflate(LayoutInflater)50%n/a111111
getRoot()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.databinding/ActivityLoginBinding.java.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.databinding/ActivityLoginBinding.java.html new file mode 100644 index 0000000..da38e56 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.databinding/ActivityLoginBinding.java.html @@ -0,0 +1,110 @@ +ActivityLoginBinding.java

ActivityLoginBinding.java

// Generated by view binder compiler. Do not edit!
+package com.example.login.databinding;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ProgressBar;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.viewbinding.ViewBinding;
+import androidx.viewbinding.ViewBindings;
+import com.example.login.R;
+import java.lang.NullPointerException;
+import java.lang.Override;
+import java.lang.String;
+
+public final class ActivityLoginBinding implements ViewBinding {
+  @NonNull
+  private final ConstraintLayout rootView;
+
+  @NonNull
+  public final ConstraintLayout container;
+
+  @NonNull
+  public final ProgressBar loading;
+
+  @NonNull
+  public final Button login;
+
+  @NonNull
+  public final EditText password;
+
+  @NonNull
+  public final EditText username;
+
+  private ActivityLoginBinding(@NonNull ConstraintLayout rootView,
+      @NonNull ConstraintLayout container, @NonNull ProgressBar loading, @NonNull Button login,
+      @NonNull EditText password, @NonNull EditText username) {
+    this.rootView = rootView;
+    this.container = container;
+    this.loading = loading;
+    this.login = login;
+    this.password = password;
+    this.username = username;
+  }
+
+  @Override
+  @NonNull
+  public ConstraintLayout getRoot() {
+    return rootView;
+  }
+
+  @NonNull
+  public static ActivityLoginBinding inflate(@NonNull LayoutInflater inflater) {
+    return inflate(inflater, null, false);
+  }
+
+  @NonNull
+  public static ActivityLoginBinding inflate(@NonNull LayoutInflater inflater,
+      @Nullable ViewGroup parent, boolean attachToParent) {
+    View root = inflater.inflate(R.layout.activity_login, parent, false);
+    if (attachToParent) {
+      parent.addView(root);
+    }
+    return bind(root);
+  }
+
+  @NonNull
+  public static ActivityLoginBinding bind(@NonNull View rootView) {
+    // The body of this method is generated in a way you would not otherwise write.
+    // This is done to optimize the compiled bytecode for size and performance.
+    int id;
+    missingId: {
+      ConstraintLayout container = (ConstraintLayout) rootView;
+
+      id = R.id.loading;
+      ProgressBar loading = ViewBindings.findChildViewById(rootView, id);
+      if (loading == null) {
+        break missingId;
+      }
+
+      id = R.id.login;
+      Button login = ViewBindings.findChildViewById(rootView, id);
+      if (login == null) {
+        break missingId;
+      }
+
+      id = R.id.password;
+      EditText password = ViewBindings.findChildViewById(rootView, id);
+      if (password == null) {
+        break missingId;
+      }
+
+      id = R.id.username;
+      EditText username = ViewBindings.findChildViewById(rootView, id);
+      if (username == null) {
+        break missingId;
+      }
+
+      return new ActivityLoginBinding((ConstraintLayout) rootView, container, loading, login,
+          password, username);
+    }
+    String missingId = rootView.getResources().getResourceName(id);
+    throw new NullPointerException("Missing required view with ID: ".concat(missingId));
+  }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.databinding/index.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.databinding/index.html new file mode 100644 index 0000000..19b2c76 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.databinding/index.html @@ -0,0 +1 @@ +com.example.login.databinding

com.example.login.databinding

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total109 of 1090%10 of 100%101034345511
ActivityLoginBinding1090%100%101034345511
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.databinding/index.source.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.databinding/index.source.html new file mode 100644 index 0000000..61d7c58 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.databinding/index.source.html @@ -0,0 +1 @@ +com.example.login.databinding

com.example.login.databinding

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total109 of 1090%10 of 100%101034345511
ActivityLoginBinding.java1090%100%101034345511
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data.model/LoggedInUser.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data.model/LoggedInUser.html new file mode 100644 index 0000000..3467ea4 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data.model/LoggedInUser.html @@ -0,0 +1 @@ +LoggedInUser

LoggedInUser

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 2185%0 of 0n/a130313
getDisplayName()30%n/a111111
LoggedInUser(String, String)15100%n/a010301
getUserId()3100%n/a010101
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data.model/LoggedInUser.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data.model/LoggedInUser.kt.html new file mode 100644 index 0000000..d145190 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data.model/LoggedInUser.kt.html @@ -0,0 +1,10 @@ +LoggedInUser.kt

LoggedInUser.kt

package com.example.login.ui.data.model
+
+/**
+ * Data class that captures user information for logged in users retrieved from LoginRepository
+ */
+data class LoggedInUser(
+    val userId: String,
+    val displayName: String
+)
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data.model/index.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data.model/index.html new file mode 100644 index 0000000..2406afb --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data.model/index.html @@ -0,0 +1 @@ +com.example.login.ui.data.model

com.example.login.ui.data.model

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total3 of 2185%0 of 0n/a13031301
LoggedInUser31885%n/a13031301
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data.model/index.source.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data.model/index.source.html new file mode 100644 index 0000000..2b648c7 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data.model/index.source.html @@ -0,0 +1 @@ +com.example.login.ui.data.model

com.example.login.ui.data.model

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total3 of 2185%0 of 0n/a13031301
LoggedInUser.kt31885%n/a13031301
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/LoginDataSource.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/LoginDataSource.html new file mode 100644 index 0000000..bbba4cd --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/LoginDataSource.html @@ -0,0 +1 @@ +LoginDataSource

LoginDataSource

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total13 of 3966%0 of 0n/a133713
login(String, String)122365%n/a012501
logout()10%n/a111111
LoginDataSource()3100%n/a010101
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/LoginDataSource.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/LoginDataSource.kt.html new file mode 100644 index 0000000..ce3303e --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/LoginDataSource.kt.html @@ -0,0 +1,26 @@ +LoginDataSource.kt

LoginDataSource.kt

package com.example.login.ui.data
+
+import com.example.login.ui.data.model.LoggedInUser
+import java.io.IOException
+import java.util.UUID
+
+/**
+ * Class that handles authentication w/ login credentials and retrieves user information.
+ */
+class LoginDataSource {
+
+    fun login(username: String, password: String): Result<LoggedInUser> {
+        try {
+            // TODO: handle loggedInUser authentication
+            val fakeUser = LoggedInUser(UUID.randomUUID().toString(), "Jane Doe")
+            return Result.Success(fakeUser)
+        } catch (e: Throwable) {
+            return Result.Error(IOException("Error logging in", e))
+        }
+    }
+
+    fun logout() {
+        // TODO: revoke authentication
+    }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/LoginRepository.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/LoginRepository.html new file mode 100644 index 0000000..63a7371 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/LoginRepository.html @@ -0,0 +1 @@ +LoginRepository

LoginRepository

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total61 of 610%4 of 40%99151577
login(String, String)230%20%224411
LoginRepository(LoginDataSource)140%n/a114411
isLoggedIn()70%20%221111
logout()70%n/a113311
setLoggedInUser(LoggedInUser)40%n/a112211
getDataSource()30%n/a111111
getUser()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/LoginRepository.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/LoginRepository.kt.html new file mode 100644 index 0000000..decce8a --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/LoginRepository.kt.html @@ -0,0 +1,47 @@ +LoginRepository.kt

LoginRepository.kt

package com.example.login.ui.data
+
+import com.example.login.ui.data.model.LoggedInUser
+
+/**
+ * Class that requests authentication and user information from the remote data source and
+ * maintains an in-memory cache of login status and user credentials information.
+ */
+
+class LoginRepository(val dataSource: LoginDataSource) {
+
+    // in-memory cache of the loggedInUser object
+    var user: LoggedInUser? = null
+        private set
+
+    val isLoggedIn: Boolean
+        get() = user != null
+
+    init {
+        // If user credentials will be cached in local storage, it is recommended it be encrypted
+        // @see https://developer.android.com/training/articles/keystore
+        user = null
+    }
+
+    fun logout() {
+        user = null
+        dataSource.logout()
+    }
+
+    fun login(username: String, password: String): Result<LoggedInUser> {
+        // handle login
+        val result = dataSource.login(username, password)
+
+        if (result is Result.Success) {
+            setLoggedInUser(result.data)
+        }
+
+        return result
+    }
+
+    private fun setLoggedInUser(loggedInUser: LoggedInUser) {
+        this.user = loggedInUser
+        // If user credentials will be cached in local storage, it is recommended it be encrypted
+        // @see https://developer.android.com/training/articles/keystore
+    }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/Result$Error.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/Result$Error.html new file mode 100644 index 0000000..7b54655 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/Result$Error.html @@ -0,0 +1 @@ +Result.Error

Result.Error

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total13 of 130%0 of 0n/a221122
Result.Error(Exception)100%n/a111111
getException()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/Result$Success.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/Result$Success.html new file mode 100644 index 0000000..21bfa5a --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/Result$Success.html @@ -0,0 +1 @@ +Result.Success

Result.Success

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 13100%0 of 0n/a020102
Result.Success(Object)10100%n/a010101
getData()3100%n/a010101
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/Result.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/Result.html new file mode 100644 index 0000000..2f6db5e --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/Result.html @@ -0,0 +1 @@ +Result

Result

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total18 of 180%2 of 20%223311
toString()180%20%223311
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/Result.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/Result.kt.html new file mode 100644 index 0000000..e106433 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/Result.kt.html @@ -0,0 +1,19 @@ +Result.kt

Result.kt

package com.example.login.ui.data
+
+/**
+ * A generic class that holds a value with its loading status.
+ * @param <T>
+ */
+sealed class Result<out T : Any> {
+
+    data class Success<out T : Any>(val data: T) : Result<T>()
+    data class Error(val exception: Exception) : Result<Nothing>()
+
+    override fun toString(): String {
+        return when (this) {
+            is Success<*> -> "Success[data=$data]"
+            is Error -> "Error[exception=$exception]"
+        }
+    }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/index.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/index.html new file mode 100644 index 0000000..30d1d12 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/index.html @@ -0,0 +1 @@ +com.example.login.ui.data

com.example.login.ui.data

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total105 of 14427%6 of 60%14182227111535
LoginRepository610%40%9915157711
Result180%20%22331111
LoginDataSource132666%n/a13371301
Result.Error130%n/a22112211
Result.Success13100%n/a02010201
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/index.source.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/index.source.html new file mode 100644 index 0000000..a6e866f --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.data/index.source.html @@ -0,0 +1 @@ +com.example.login.ui.data

com.example.login.ui.data

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total105 of 14427%6 of 60%14182227111535
LoginRepository.kt610%40%9915157711
Result.kt311329%20%46453523
LoginDataSource.kt132666%n/a13371301
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoggedInUserView.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoggedInUserView.html new file mode 100644 index 0000000..4a49e42 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoggedInUserView.html @@ -0,0 +1 @@ +LoggedInUserView

LoggedInUserView

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total12 of 120%0 of 0n/a222222
LoggedInUserView(String)90%n/a112211
getDisplayName()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoggedInUserView.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoggedInUserView.kt.html new file mode 100644 index 0000000..b42c983 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoggedInUserView.kt.html @@ -0,0 +1,10 @@ +LoggedInUserView.kt

LoggedInUserView.kt

package com.example.login.ui.login
+
+/**
+ * User details post authentication that is exposed to the UI
+ */
+data class LoggedInUserView(
+    val displayName: String
+    //... other data fields that may be accessible to the UI
+)
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginActivity.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginActivity.html new file mode 100644 index 0000000..416fc8f --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginActivity.html @@ -0,0 +1 @@ +LoginActivity

LoginActivity

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total269 of 2690%14 of 140%171762621010
onCreate(Bundle)1170%n/a11181811
onCreate$lambda$0(Button, EditText, LoginActivity, EditText, LoginFormState)330%60%447711
onCreate$lambda$1(ProgressBar, LoginActivity, LoginResult)300%60%449911
updateUiWithUser(LoggedInUserView)200%n/a118811
onCreate$lambda$2(LoginActivity, EditText, EditText, String)150%n/a114411
onCreate$lambda$6$lambda$3(LoginActivity, EditText, EditText, String)150%n/a114411
onCreate$lambda$6$lambda$4(LoginActivity, EditText, EditText, TextView, int, KeyEvent)150%20%226611
onCreate$lambda$6$lambda$5(ProgressBar, LoginActivity, EditText, EditText, View)140%n/a113311
showLoginFailed(int)70%n/a112211
LoginActivity()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginActivity.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginActivity.kt.html new file mode 100644 index 0000000..c307bee --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginActivity.kt.html @@ -0,0 +1,130 @@ +LoginActivity.kt

LoginActivity.kt

package com.example.login.ui.login
+
+import android.app.Activity
+import android.os.Bundle
+import android.text.Editable
+import android.text.TextWatcher
+import android.view.View
+import android.view.inputmethod.EditorInfo
+import android.widget.EditText
+import android.widget.Toast
+import androidx.annotation.StringRes
+import androidx.appcompat.app.AppCompatActivity
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import com.example.login.R
+import com.example.login.databinding.ActivityLoginBinding
+
+class LoginActivity : AppCompatActivity() {
+
+    private lateinit var loginViewModel: LoginViewModel
+    private lateinit var binding: ActivityLoginBinding
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+        binding = ActivityLoginBinding.inflate(layoutInflater)
+        setContentView(binding.root)
+
+        val username = binding.username
+        val password = binding.password
+        val login = binding.login
+        val loading = binding.loading
+
+        loginViewModel = ViewModelProvider(this, LoginViewModelFactory())
+            .get(LoginViewModel::class.java)
+
+        loginViewModel.loginFormState.observe(this@LoginActivity, Observer {
+            val loginState = it ?: return@Observer
+
+            // disable login button unless both username / password is valid
+            login.isEnabled = loginState.isDataValid
+
+            if (loginState.usernameError != null) {
+                username.error = getString(loginState.usernameError)
+            }
+            if (loginState.passwordError != null) {
+                password.error = getString(loginState.passwordError)
+            }
+        })
+
+        loginViewModel.loginResult.observe(this@LoginActivity, Observer {
+            val loginResult = it ?: return@Observer
+
+            loading.visibility = View.GONE
+            if (loginResult.error != null) {
+                showLoginFailed(loginResult.error)
+            }
+            if (loginResult.success != null) {
+                updateUiWithUser(loginResult.success)
+            }
+            setResult(Activity.RESULT_OK)
+
+            //Complete and destroy login activity once successful
+            finish()
+        })
+
+        username.afterTextChanged {
+            loginViewModel.loginDataChanged(
+                username.text.toString(),
+                password.text.toString()
+            )
+        }
+
+        password.apply {
+            afterTextChanged {
+                loginViewModel.loginDataChanged(
+                    username.text.toString(),
+                    password.text.toString()
+                )
+            }
+
+            setOnEditorActionListener { _, actionId, _ ->
+                when (actionId) {
+                    EditorInfo.IME_ACTION_DONE ->
+                        loginViewModel.login(
+                            username.text.toString(),
+                            password.text.toString()
+                        )
+                }
+                false
+            }
+
+            login.setOnClickListener {
+                loading.visibility = View.VISIBLE
+                loginViewModel.login(username.text.toString(), password.text.toString())
+            }
+        }
+    }
+
+    private fun updateUiWithUser(model: LoggedInUserView) {
+        val welcome = getString(R.string.welcome)
+        val displayName = model.displayName
+        // TODO : initiate successful logged in experience
+        Toast.makeText(
+            applicationContext,
+            "$welcome $displayName",
+            Toast.LENGTH_LONG
+        ).show()
+    }
+
+    private fun showLoginFailed(@StringRes errorString: Int) {
+        Toast.makeText(applicationContext, errorString, Toast.LENGTH_SHORT).show()
+    }
+}
+
+/**
+ * Extension function to simplify setting an afterTextChanged action to EditText components.
+ */
+fun EditText.afterTextChanged(afterTextChanged: (String) -> Unit) {
+    this.addTextChangedListener(object : TextWatcher {
+        override fun afterTextChanged(editable: Editable?) {
+            afterTextChanged.invoke(editable.toString())
+        }
+
+        override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
+
+        override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
+    })
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginActivityKt$afterTextChanged$1.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginActivityKt$afterTextChanged$1.html new file mode 100644 index 0000000..91fa6af --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginActivityKt$afterTextChanged$1.html @@ -0,0 +1 @@ +LoginActivityKt.afterTextChanged.new TextWatcher() {...}

LoginActivityKt.afterTextChanged.new TextWatcher() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total21 of 210%0 of 0n/a445544
afterTextChanged(Editable)70%n/a112211
{...}60%n/a111111
beforeTextChanged(CharSequence, int, int, int)40%n/a111111
onTextChanged(CharSequence, int, int, int)40%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginActivityKt.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginActivityKt.html new file mode 100644 index 0000000..491289b --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginActivityKt.html @@ -0,0 +1 @@ +LoginActivityKt

LoginActivityKt

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total14 of 140%0 of 0n/a112211
afterTextChanged(EditText, Function1)140%n/a112211
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginFormState.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginFormState.html new file mode 100644 index 0000000..0e1030b --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginFormState.html @@ -0,0 +1 @@ +LoginFormState

LoginFormState

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total42 of 420%0 of 0n/a555555
LoginFormState(Integer, Integer, boolean, int, DefaultConstructorMarker)210%n/a115511
LoginFormState(Integer, Integer, boolean)120%n/a114411
getUsernameError()30%n/a111111
getPasswordError()30%n/a111111
isDataValid()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginFormState.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginFormState.kt.html new file mode 100644 index 0000000..bc4d4f0 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginFormState.kt.html @@ -0,0 +1,11 @@ +LoginFormState.kt

LoginFormState.kt

package com.example.login.ui.login
+
+/**
+ * Data validation state of the login form.
+ */
+data class LoginFormState(
+    val usernameError: Int? = null,
+    val passwordError: Int? = null,
+    val isDataValid: Boolean = false
+)
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginResult.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginResult.html new file mode 100644 index 0000000..92f0b5d --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginResult.html @@ -0,0 +1 @@ +LoginResult

LoginResult

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total30 of 300%0 of 0n/a444444
LoginResult(LoggedInUserView, Integer, int, DefaultConstructorMarker)150%n/a114411
LoginResult(LoggedInUserView, Integer)90%n/a113311
getSuccess()30%n/a111111
getError()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginResult.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginResult.kt.html new file mode 100644 index 0000000..3dbb5a9 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginResult.kt.html @@ -0,0 +1,10 @@ +LoginResult.kt

LoginResult.kt

package com.example.login.ui.login
+
+/**
+ * Authentication result : success (user details) or error message.
+ */
+data class LoginResult(
+    val success: LoggedInUserView? = null,
+    val error: Int? = null
+)
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginViewModel.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginViewModel.html new file mode 100644 index 0000000..2ed6ca2 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginViewModel.html @@ -0,0 +1 @@ +LoginViewModel

LoginViewModel

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total162 of 1620%12 of 120%1313212177
loginDataChanged(String, String)520%40%336611
login(String, String)450%20%226611
LoginViewModel(LoginRepository)290%n/a115511
isUserNameValid(String)220%40%333311
isPasswordValid(String)80%20%221111
getLoginFormState()30%n/a111111
getLoginResult()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginViewModel.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginViewModel.kt.html new file mode 100644 index 0000000..cbada0f --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginViewModel.kt.html @@ -0,0 +1,55 @@ +LoginViewModel.kt

LoginViewModel.kt

package com.example.login.ui.login
+
+import android.util.Patterns
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import com.example.login.R
+import com.example.login.ui.data.LoginRepository
+import com.example.login.ui.data.Result
+
+class LoginViewModel(private val loginRepository: LoginRepository) : ViewModel() {
+
+    private val _loginForm = MutableLiveData<LoginFormState>()
+    val loginFormState: LiveData<LoginFormState> = _loginForm
+
+    private val _loginResult = MutableLiveData<LoginResult>()
+    val loginResult: LiveData<LoginResult> = _loginResult
+
+    fun login(username: String, password: String) {
+        // can be launched in a separate asynchronous job
+        val result = loginRepository.login(username, password)
+
+        if (result is Result.Success) {
+            _loginResult.value =
+                LoginResult(success = LoggedInUserView(displayName = result.data.displayName))
+        } else {
+            _loginResult.value = LoginResult(error = R.string.login_failed)
+        }
+    }
+
+    fun loginDataChanged(username: String, password: String) {
+        if (!isUserNameValid(username)) {
+            _loginForm.value = LoginFormState(usernameError = R.string.invalid_username)
+        } else if (!isPasswordValid(password)) {
+            _loginForm.value = LoginFormState(passwordError = R.string.invalid_password)
+        } else {
+            _loginForm.value = LoginFormState(isDataValid = true)
+        }
+    }
+
+    // A placeholder username validation check
+    private fun isUserNameValid(username: String): Boolean {
+        return if (username.contains('@')) {
+            Patterns.EMAIL_ADDRESS.matcher(username).matches()
+        } else {
+            username.isNotBlank()
+        }
+    }
+
+    // A placeholder password validation check
+    private fun isPasswordValid(password: String): Boolean {
+        return password.length > 5
+    }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginViewModelFactory.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginViewModelFactory.html new file mode 100644 index 0000000..ee9cad0 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginViewModelFactory.html @@ -0,0 +1 @@ +LoginViewModelFactory

LoginViewModelFactory

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total26 of 260%2 of 20%336622
create(Class)230%20%225511
LoginViewModelFactory()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginViewModelFactory.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginViewModelFactory.kt.html new file mode 100644 index 0000000..82c95ea --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/LoginViewModelFactory.kt.html @@ -0,0 +1,26 @@ +LoginViewModelFactory.kt

LoginViewModelFactory.kt

package com.example.login.ui.login
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+import com.example.login.ui.data.LoginDataSource
+import com.example.login.ui.data.LoginRepository
+
+/**
+ * ViewModel provider factory to instantiate LoginViewModel.
+ * Required given LoginViewModel has a non-empty constructor
+ */
+class LoginViewModelFactory : ViewModelProvider.Factory {
+
+    @Suppress("UNCHECKED_CAST")
+    override fun <T : ViewModel> create(modelClass: Class<T>): T {
+        if (modelClass.isAssignableFrom(LoginViewModel::class.java)) {
+            return LoginViewModel(
+                loginRepository = LoginRepository(
+                    dataSource = LoginDataSource()
+                )
+            ) as T
+        }
+        throw IllegalArgumentException("Unknown ViewModel class")
+    }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/index.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/index.html new file mode 100644 index 0000000..20617b8 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/index.html @@ -0,0 +1 @@ +com.example.login.ui.login

com.example.login.ui.login

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total576 of 5760%28 of 280%4949106106353588
LoginActivity2690%140%17176262101011
LoginViewModel1620%120%131321217711
LoginFormState420%n/a55555511
LoginResult300%n/a44444411
LoginViewModelFactory260%20%33662211
LoginActivityKt.afterTextChanged.new TextWatcher() {...}210%n/a44554411
LoginActivityKt140%n/a11221111
LoggedInUserView120%n/a22222211
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/index.source.html b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/index.source.html new file mode 100644 index 0000000..3aafe4e --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.login.ui.login/index.source.html @@ -0,0 +1 @@ +com.example.login.ui.login

com.example.login.ui.login

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total576 of 5760%28 of 280%4949106106353588
LoginActivity.kt3040%140%22226868151533
LoginViewModel.kt1620%120%131321217711
LoginFormState.kt420%n/a55555511
LoginResult.kt300%n/a44444411
LoginViewModelFactory.kt260%20%33662211
LoggedInUserView.kt120%n/a22222211
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/ActivityMainBinding.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/ActivityMainBinding.html new file mode 100644 index 0000000..cad05bb --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/ActivityMainBinding.html @@ -0,0 +1 @@ +ActivityMainBinding

ActivityMainBinding

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total17 of 7477%3 of 650%3852205
bind(View)142665%2250%2341101
inflate(LayoutInflater, ViewGroup, boolean)31178%1150%121401
ActivityMainBinding(CoordinatorLayout, FloatingActionButton, Toolbar)12100%n/a010501
inflate(LayoutInflater)5100%n/a010101
getRoot()3100%n/a010101
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/ActivityMainBinding.java.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/ActivityMainBinding.java.html new file mode 100644 index 0000000..dfe160e --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/ActivityMainBinding.java.html @@ -0,0 +1,81 @@ +ActivityMainBinding.java

ActivityMainBinding.java

// Generated by view binder compiler. Do not edit!
+package com.example.myapplication.databinding;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.Toolbar;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.viewbinding.ViewBinding;
+import androidx.viewbinding.ViewBindings;
+import com.example.myapplication.R;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+import java.lang.NullPointerException;
+import java.lang.Override;
+import java.lang.String;
+
+public final class ActivityMainBinding implements ViewBinding {
+  @NonNull
+  private final CoordinatorLayout rootView;
+
+  @NonNull
+  public final FloatingActionButton fab;
+
+  @NonNull
+  public final Toolbar toolbar;
+
+  private ActivityMainBinding(@NonNull CoordinatorLayout rootView,
+      @NonNull FloatingActionButton fab, @NonNull Toolbar toolbar) {
+    this.rootView = rootView;
+    this.fab = fab;
+    this.toolbar = toolbar;
+  }
+
+  @Override
+  @NonNull
+  public CoordinatorLayout getRoot() {
+    return rootView;
+  }
+
+  @NonNull
+  public static ActivityMainBinding inflate(@NonNull LayoutInflater inflater) {
+    return inflate(inflater, null, false);
+  }
+
+  @NonNull
+  public static ActivityMainBinding inflate(@NonNull LayoutInflater inflater,
+      @Nullable ViewGroup parent, boolean attachToParent) {
+    View root = inflater.inflate(R.layout.activity_main, parent, false);
+    if (attachToParent) {
+      parent.addView(root);
+    }
+    return bind(root);
+  }
+
+  @NonNull
+  public static ActivityMainBinding bind(@NonNull View rootView) {
+    // The body of this method is generated in a way you would not otherwise write.
+    // This is done to optimize the compiled bytecode for size and performance.
+    int id;
+    missingId: {
+      id = R.id.fab;
+      FloatingActionButton fab = ViewBindings.findChildViewById(rootView, id);
+      if (fab == null) {
+        break missingId;
+      }
+
+      id = R.id.toolbar;
+      Toolbar toolbar = ViewBindings.findChildViewById(rootView, id);
+      if (toolbar == null) {
+        break missingId;
+      }
+
+      return new ActivityMainBinding((CoordinatorLayout) rootView, fab, toolbar);
+    }
+    String missingId = rootView.getResources().getResourceName(id);
+    throw new NullPointerException("Missing required view with ID: ".concat(missingId));
+  }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/FragmentFirstBinding.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/FragmentFirstBinding.html new file mode 100644 index 0000000..d794c67 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/FragmentFirstBinding.html @@ -0,0 +1 @@ +FragmentFirstBinding

FragmentFirstBinding

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total22 of 7470%3 of 650%4862215
bind(View)142665%2250%2341101
inflate(LayoutInflater)50%n/a111111
inflate(LayoutInflater, ViewGroup, boolean)31178%1150%121401
FragmentFirstBinding(ConstraintLayout, Button, TextView)12100%n/a010501
getRoot()3100%n/a010101
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/FragmentFirstBinding.java.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/FragmentFirstBinding.java.html new file mode 100644 index 0000000..12c6cb7 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/FragmentFirstBinding.java.html @@ -0,0 +1,81 @@ +FragmentFirstBinding.java

FragmentFirstBinding.java

// Generated by view binder compiler. Do not edit!
+package com.example.myapplication.databinding;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.viewbinding.ViewBinding;
+import androidx.viewbinding.ViewBindings;
+import com.example.myapplication.R;
+import java.lang.NullPointerException;
+import java.lang.Override;
+import java.lang.String;
+
+public final class FragmentFirstBinding implements ViewBinding {
+  @NonNull
+  private final ConstraintLayout rootView;
+
+  @NonNull
+  public final Button buttonFirst;
+
+  @NonNull
+  public final TextView textviewFirst;
+
+  private FragmentFirstBinding(@NonNull ConstraintLayout rootView, @NonNull Button buttonFirst,
+      @NonNull TextView textviewFirst) {
+    this.rootView = rootView;
+    this.buttonFirst = buttonFirst;
+    this.textviewFirst = textviewFirst;
+  }
+
+  @Override
+  @NonNull
+  public ConstraintLayout getRoot() {
+    return rootView;
+  }
+
+  @NonNull
+  public static FragmentFirstBinding inflate(@NonNull LayoutInflater inflater) {
+    return inflate(inflater, null, false);
+  }
+
+  @NonNull
+  public static FragmentFirstBinding inflate(@NonNull LayoutInflater inflater,
+      @Nullable ViewGroup parent, boolean attachToParent) {
+    View root = inflater.inflate(R.layout.fragment_first, parent, false);
+    if (attachToParent) {
+      parent.addView(root);
+    }
+    return bind(root);
+  }
+
+  @NonNull
+  public static FragmentFirstBinding bind(@NonNull View rootView) {
+    // The body of this method is generated in a way you would not otherwise write.
+    // This is done to optimize the compiled bytecode for size and performance.
+    int id;
+    missingId: {
+      id = R.id.button_first;
+      Button buttonFirst = ViewBindings.findChildViewById(rootView, id);
+      if (buttonFirst == null) {
+        break missingId;
+      }
+
+      id = R.id.textview_first;
+      TextView textviewFirst = ViewBindings.findChildViewById(rootView, id);
+      if (textviewFirst == null) {
+        break missingId;
+      }
+
+      return new FragmentFirstBinding((ConstraintLayout) rootView, buttonFirst, textviewFirst);
+    }
+    String missingId = rootView.getResources().getResourceName(id);
+    throw new NullPointerException("Missing required view with ID: ".concat(missingId));
+  }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/FragmentSecondBinding.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/FragmentSecondBinding.html new file mode 100644 index 0000000..c0e8cd4 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/FragmentSecondBinding.html @@ -0,0 +1 @@ +FragmentSecondBinding

FragmentSecondBinding

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total74 of 740%6 of 60%88222255
bind(View)400%40%33111111
inflate(LayoutInflater, ViewGroup, boolean)140%20%224411
FragmentSecondBinding(ConstraintLayout, Button, TextView)120%n/a115511
inflate(LayoutInflater)50%n/a111111
getRoot()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/FragmentSecondBinding.java.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/FragmentSecondBinding.java.html new file mode 100644 index 0000000..4475ace --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/FragmentSecondBinding.java.html @@ -0,0 +1,81 @@ +FragmentSecondBinding.java

FragmentSecondBinding.java

// Generated by view binder compiler. Do not edit!
+package com.example.myapplication.databinding;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.viewbinding.ViewBinding;
+import androidx.viewbinding.ViewBindings;
+import com.example.myapplication.R;
+import java.lang.NullPointerException;
+import java.lang.Override;
+import java.lang.String;
+
+public final class FragmentSecondBinding implements ViewBinding {
+  @NonNull
+  private final ConstraintLayout rootView;
+
+  @NonNull
+  public final Button buttonSecond;
+
+  @NonNull
+  public final TextView textviewSecond;
+
+  private FragmentSecondBinding(@NonNull ConstraintLayout rootView, @NonNull Button buttonSecond,
+      @NonNull TextView textviewSecond) {
+    this.rootView = rootView;
+    this.buttonSecond = buttonSecond;
+    this.textviewSecond = textviewSecond;
+  }
+
+  @Override
+  @NonNull
+  public ConstraintLayout getRoot() {
+    return rootView;
+  }
+
+  @NonNull
+  public static FragmentSecondBinding inflate(@NonNull LayoutInflater inflater) {
+    return inflate(inflater, null, false);
+  }
+
+  @NonNull
+  public static FragmentSecondBinding inflate(@NonNull LayoutInflater inflater,
+      @Nullable ViewGroup parent, boolean attachToParent) {
+    View root = inflater.inflate(R.layout.fragment_second, parent, false);
+    if (attachToParent) {
+      parent.addView(root);
+    }
+    return bind(root);
+  }
+
+  @NonNull
+  public static FragmentSecondBinding bind(@NonNull View rootView) {
+    // The body of this method is generated in a way you would not otherwise write.
+    // This is done to optimize the compiled bytecode for size and performance.
+    int id;
+    missingId: {
+      id = R.id.button_second;
+      Button buttonSecond = ViewBindings.findChildViewById(rootView, id);
+      if (buttonSecond == null) {
+        break missingId;
+      }
+
+      id = R.id.textview_second;
+      TextView textviewSecond = ViewBindings.findChildViewById(rootView, id);
+      if (textviewSecond == null) {
+        break missingId;
+      }
+
+      return new FragmentSecondBinding((ConstraintLayout) rootView, buttonSecond, textviewSecond);
+    }
+    String missingId = rootView.getResources().getResourceName(id);
+    throw new NullPointerException("Missing required view with ID: ".concat(missingId));
+  }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/index.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/index.html new file mode 100644 index 0000000..8f7f9c5 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/index.html @@ -0,0 +1 @@ +com.example.myapplication.databinding

com.example.myapplication.databinding

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total113 of 22249%12 of 1833%1524336661513
FragmentSecondBinding740%60%8822225511
FragmentFirstBinding225270%3350%486221501
ActivityMainBinding175777%3350%385220501
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/index.source.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/index.source.html new file mode 100644 index 0000000..2e009a7 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication.databinding/index.source.html @@ -0,0 +1 @@ +com.example.myapplication.databinding

com.example.myapplication.databinding

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total113 of 22249%12 of 1833%1524336661513
FragmentSecondBinding.java740%60%8822225511
FragmentFirstBinding.java225270%3350%486221501
ActivityMainBinding.java175777%3350%385220501
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/FirstFragment.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/FirstFragment.html new file mode 100644 index 0000000..a2237de --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/FirstFragment.html @@ -0,0 +1 @@ +FirstFragment

FirstFragment

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total6 of 4887%0 of 0n/a1621216
onViewCreated$lambda$0(FirstFragment, View)60%n/a112211
onCreateView(LayoutInflater, ViewGroup, Bundle)14100%n/a010201
onViewCreated(View, Bundle)14100%n/a010301
onDestroyView()6100%n/a010301
getBinding()5100%n/a010101
FirstFragment()3100%n/a010101
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/FirstFragment.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/FirstFragment.kt.html new file mode 100644 index 0000000..694dcdb --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/FirstFragment.kt.html @@ -0,0 +1,45 @@ +FirstFragment.kt

FirstFragment.kt

package com.example.myapplication
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.findNavController
+import com.example.myapplication.databinding.FragmentFirstBinding
+
+/**
+ * A simple [Fragment] subclass as the default destination in the navigation.
+ */
+class FirstFragment : Fragment() {
+
+    private var _binding: FragmentFirstBinding? = null
+
+    // This property is only valid between onCreateView and
+    // onDestroyView.
+    private val binding get() = _binding!!
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+
+        _binding = FragmentFirstBinding.inflate(inflater, container, false)
+        return binding.root
+
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+
+        binding.buttonFirst.setOnClickListener {
+            findNavController().navigate(R.id.action_FirstFragment_to_SecondFragment)
+        }
+    }
+
+    override fun onDestroyView() {
+        super.onDestroyView()
+        _binding = null
+    }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/MainActivity$onPostCreate$$inlined$AppBarConfiguration$default$1.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/MainActivity$onPostCreate$$inlined$AppBarConfiguration$default$1.html new file mode 100644 index 0000000..2b23b76 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/MainActivity$onPostCreate$$inlined$AppBarConfiguration$default$1.html @@ -0,0 +1 @@ +MainActivity.onPostCreate..inlined.AppBarConfiguration.default.new Function0() {...}

MainActivity.onPostCreate..inlined.AppBarConfiguration.default.new Function0() {...}

Source file "com/example/myapplication/AppBarConfiguration.kt" was not found during generation of report.

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 30%0 of 0n/a111111
invoke()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/MainActivity.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/MainActivity.html new file mode 100644 index 0000000..b86737c --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/MainActivity.html @@ -0,0 +1 @@ +MainActivity

MainActivity

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total29 of 7762%4 of 40%4661624
onSupportNavigateUp()180%40%333311
onPostCreate$lambda$0(View)110%n/a113311
onPostCreate(Bundle)45100%n/a010901
MainActivity()3100%n/a010101
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/MainActivity.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/MainActivity.kt.html new file mode 100644 index 0000000..e59ea26 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/MainActivity.kt.html @@ -0,0 +1,41 @@ +MainActivity.kt

MainActivity.kt

package com.example.myapplication
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.navigation.findNavController
+import androidx.navigation.ui.AppBarConfiguration
+import androidx.navigation.ui.navigateUp
+import androidx.navigation.ui.setupActionBarWithNavController
+import com.example.myapplication.databinding.ActivityMainBinding
+import com.google.android.material.snackbar.Snackbar
+
+class MainActivity : AppCompatActivity() {
+
+    private lateinit var appBarConfiguration: AppBarConfiguration
+    private lateinit var binding: ActivityMainBinding
+
+    override fun onPostCreate(savedInstanceState: Bundle?) {
+        super.onPostCreate(savedInstanceState)
+
+        binding = ActivityMainBinding.inflate(layoutInflater)
+        setContentView(binding.root)
+
+        setSupportActionBar(binding.toolbar)
+
+        val navController = findNavController(R.id.nav_host_fragment_content_main)
+        appBarConfiguration = AppBarConfiguration(navController.graph)
+        setupActionBarWithNavController(navController, appBarConfiguration)
+
+        binding.fab.setOnClickListener { view ->
+            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
+                .setAction("Action", null).show()
+        }
+    }
+
+    override fun onSupportNavigateUp(): Boolean {
+        val navController = findNavController(R.id.nav_host_fragment_content_main)
+        return navController.navigateUp(appBarConfiguration)
+                || super.onSupportNavigateUp()
+    }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/SecondFragment.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/SecondFragment.html new file mode 100644 index 0000000..8204abd --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/SecondFragment.html @@ -0,0 +1 @@ +SecondFragment

SecondFragment

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total48 of 480%0 of 0n/a66121266
onCreateView(LayoutInflater, ViewGroup, Bundle)140%n/a112211
onViewCreated(View, Bundle)140%n/a113311
onDestroyView()60%n/a113311
onViewCreated$lambda$0(SecondFragment, View)60%n/a112211
getBinding()50%n/a111111
SecondFragment()30%n/a111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/SecondFragment.kt.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/SecondFragment.kt.html new file mode 100644 index 0000000..418ef90 --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/SecondFragment.kt.html @@ -0,0 +1,45 @@ +SecondFragment.kt

SecondFragment.kt

package com.example.myapplication
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.findNavController
+import com.example.myapplication.databinding.FragmentSecondBinding
+
+/**
+ * A simple [Fragment] subclass as the second destination in the navigation.
+ */
+class SecondFragment : Fragment() {
+
+    private var _binding: FragmentSecondBinding? = null
+
+    // This property is only valid between onCreateView and
+    // onDestroyView.
+    private val binding get() = _binding!!
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+
+        _binding = FragmentSecondBinding.inflate(inflater, container, false)
+        return binding.root
+
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+
+        binding.buttonSecond.setOnClickListener {
+            findNavController().navigate(R.id.action_SecondFragment_to_FirstFragment)
+        }
+    }
+
+    override fun onDestroyView() {
+        super.onDestroyView()
+        _binding = null
+    }
+}
+
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/index.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/index.html new file mode 100644 index 0000000..f9a75eb --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/index.html @@ -0,0 +1 @@ +com.example.myapplication

com.example.myapplication

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total86 of 17651%4 of 40%12192141101724
SecondFragment480%n/a6612126611
MainActivity294862%40%466162401
FirstFragment64287%n/a162121601
MainActivity.onPostCreate..inlined.AppBarConfiguration.default.new Function0() {...}30%n/a11111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/index.source.html b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/index.source.html new file mode 100644 index 0000000..b00b7ac --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/com.example.myapplication/index.source.html @@ -0,0 +1 @@ +com.example.myapplication

com.example.myapplication

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total86 of 17651%4 of 40%12192141101724
SecondFragment.kt480%n/a6612126611
MainActivity.kt294862%40%466162401
FirstFragment.kt64287%n/a162121601
AppBarConfiguration.kt30%n/a11111111
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/index.html b/demo-project/specs/aggregated-reports/coverage/index.html new file mode 100644 index 0000000..e7cc57a --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/index.html @@ -0,0 +1 @@ +demo-project

demo-project

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total1,380 of 1,67317%92 of 986%133165280347821141931
com.example.login.ui.login5760%280%4949106106353588
com.example.kmp388327%320%32406468142248
com.example.myapplication.databinding11310949%12633%1524336661513
com.example.login.databinding1090%100%101034345511
com.example.login.ui.data1053927%60%14182227111535
com.example.myapplication869051%40%12192141101724
com.example.login.ui.data.model1885%n/a13031301
com.example.domain5100%n/a02020201
\ No newline at end of file diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/branchfc.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/branchfc.gif new file mode 100644 index 0000000..989b46d Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/branchfc.gif differ diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/branchnc.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/branchnc.gif new file mode 100644 index 0000000..1933e07 Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/branchnc.gif differ diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/branchpc.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/branchpc.gif new file mode 100644 index 0000000..cbf711b Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/branchpc.gif differ diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/bundle.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/bundle.gif new file mode 100644 index 0000000..fca9c53 Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/bundle.gif differ diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/class.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/class.gif new file mode 100644 index 0000000..eb348fb Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/class.gif differ diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/down.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/down.gif new file mode 100644 index 0000000..440a14d Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/down.gif differ diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/greenbar.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/greenbar.gif new file mode 100644 index 0000000..0ba6567 Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/greenbar.gif differ diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/group.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/group.gif new file mode 100644 index 0000000..a4ea580 Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/group.gif differ diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/method.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/method.gif new file mode 100644 index 0000000..7d24707 Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/method.gif differ diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/package.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/package.gif new file mode 100644 index 0000000..131c28d Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/package.gif differ diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/prettify.css b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/prettify.css new file mode 100644 index 0000000..be5166e --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/prettify.css @@ -0,0 +1,13 @@ +/* Pretty printing styles. Used with prettify.js. */ + +.str { color: #2A00FF; } +.kwd { color: #7F0055; font-weight:bold; } +.com { color: #3F5FBF; } +.typ { color: #606; } +.lit { color: #066; } +.pun { color: #660; } +.pln { color: #000; } +.tag { color: #008; } +.atn { color: #606; } +.atv { color: #080; } +.dec { color: #606; } diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/prettify.js b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/prettify.js new file mode 100644 index 0000000..b2766fe --- /dev/null +++ b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/prettify.js @@ -0,0 +1,1510 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +/** + * @fileoverview + * some functions for browser-side pretty printing of code contained in html. + *

+ * + * For a fairly comprehensive set of languages see the + * README + * file that came with this source. At a minimum, the lexer should work on a + * number of languages including C and friends, Java, Python, Bash, SQL, HTML, + * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk + * and a subset of Perl, but, because of commenting conventions, doesn't work on + * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. + *

+ * Usage:

    + *
  1. include this source file in an html page via + * {@code } + *
  2. define style rules. See the example page for examples. + *
  3. mark the {@code
    } and {@code } tags in your source with
    + *    {@code class=prettyprint.}
    + *    You can also use the (html deprecated) {@code } tag, but the pretty
    + *    printer needs to do more substantial DOM manipulations to support that, so
    + *    some css styles may not be preserved.
    + * </ol>
    + * That's it.  I wanted to keep the API as simple as possible, so there's no
    + * need to specify which language the code is in, but if you wish, you can add
    + * another class to the {@code <pre>} or {@code <code>} element to specify the
    + * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
    + * starts with "lang-" followed by a file extension, specifies the file type.
    + * See the "lang-*.js" files in this directory for code that implements
    + * per-language file handlers.
    + * <p>
    + * Change log:<br>
    + * cbeust, 2006/08/22
    + * <blockquote>
    + *   Java annotations (start with "@") are now captured as literals ("lit")
    + * </blockquote>
    + * @requires console
    + */
    +
    +// JSLint declarations
    +/*global console, document, navigator, setTimeout, window */
    +
    +/**
    + * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
    + * UI events.
    + * If set to {@code false}, {@code prettyPrint()} is synchronous.
    + */
    +window['PR_SHOULD_USE_CONTINUATION'] = true;
    +
    +/** the number of characters between tab columns */
    +window['PR_TAB_WIDTH'] = 8;
    +
    +/** Walks the DOM returning a properly escaped version of innerHTML.
    +  * @param {Node} node
    +  * @param {Array.<string>} out output buffer that receives chunks of HTML.
    +  */
    +window['PR_normalizedHtml']
    +
    +/** Contains functions for creating and registering new language handlers.
    +  * @type {Object}
    +  */
    +  = window['PR']
    +
    +/** Pretty print a chunk of code.
    +  *
    +  * @param {string} sourceCodeHtml code as html
    +  * @return {string} code as html, but prettier
    +  */
    +  = window['prettyPrintOne']
    +/** Find all the {@code <pre>} and {@code <code>} tags in the DOM with
    +  * {@code class=prettyprint} and prettify them.
    +  * @param {Function?} opt_whenDone if specified, called when the last entry
    +  *     has been finished.
    +  */
    +  = window['prettyPrint'] = void 0;
    +
    +/** browser detection. @extern @returns false if not IE, otherwise the major version. */
    +window['_pr_isIE6'] = function () {
    +  var ieVersion = navigator && navigator.userAgent &&
    +      navigator.userAgent.match(/\bMSIE ([678])\./);
    +  ieVersion = ieVersion ? +ieVersion[1] : false;
    +  window['_pr_isIE6'] = function () { return ieVersion; };
    +  return ieVersion;
    +};
    +
    +
    +(function () {
    +  // Keyword lists for various languages.
    +  var FLOW_CONTROL_KEYWORDS =
    +      "break continue do else for if return while ";
    +  var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " +
    +      "double enum extern float goto int long register short signed sizeof " +
    +      "static struct switch typedef union unsigned void volatile ";
    +  var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " +
    +      "new operator private protected public this throw true try typeof ";
    +  var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " +
    +      "concept concept_map const_cast constexpr decltype " +
    +      "dynamic_cast explicit export friend inline late_check " +
    +      "mutable namespace nullptr reinterpret_cast static_assert static_cast " +
    +      "template typeid typename using virtual wchar_t where ";
    +  var JAVA_KEYWORDS = COMMON_KEYWORDS +
    +      "abstract boolean byte extends final finally implements import " +
    +      "instanceof null native package strictfp super synchronized throws " +
    +      "transient ";
    +  var CSHARP_KEYWORDS = JAVA_KEYWORDS +
    +      "as base by checked decimal delegate descending event " +
    +      "fixed foreach from group implicit in interface internal into is lock " +
    +      "object out override orderby params partial readonly ref sbyte sealed " +
    +      "stackalloc string select uint ulong unchecked unsafe ushort var ";
    +  var JSCRIPT_KEYWORDS = COMMON_KEYWORDS +
    +      "debugger eval export function get null set undefined var with " +
    +      "Infinity NaN ";
    +  var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " +
    +      "goto if import last local my next no our print package redo require " +
    +      "sub undef unless until use wantarray while BEGIN END ";
    +  var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " +
    +      "elif except exec finally from global import in is lambda " +
    +      "nonlocal not or pass print raise try with yield " +
    +      "False True None ";
    +  var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" +
    +      " defined elsif end ensure false in module next nil not or redo rescue " +
    +      "retry self super then true undef unless until when yield BEGIN END ";
    +  var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " +
    +      "function in local set then until ";
    +  var ALL_KEYWORDS = (
    +      CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
    +      PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
    +
    +  // token style names.  correspond to css classes
    +  /** token style for a string literal */
    +  var PR_STRING = 'str';
    +  /** token style for a keyword */
    +  var PR_KEYWORD = 'kwd';
    +  /** token style for a comment */
    +  var PR_COMMENT = 'com';
    +  /** token style for a type */
    +  var PR_TYPE = 'typ';
    +  /** token style for a literal value.  e.g. 1, null, true. */
    +  var PR_LITERAL = 'lit';
    +  /** token style for a punctuation string. */
    +  var PR_PUNCTUATION = 'pun';
    +  /** token style for a punctuation string. */
    +  var PR_PLAIN = 'pln';
    +
    +  /** token style for an sgml tag. */
    +  var PR_TAG = 'tag';
    +  /** token style for a markup declaration such as a DOCTYPE. */
    +  var PR_DECLARATION = 'dec';
    +  /** token style for embedded source. */
    +  var PR_SOURCE = 'src';
    +  /** token style for an sgml attribute name. */
    +  var PR_ATTRIB_NAME = 'atn';
    +  /** token style for an sgml attribute value. */
    +  var PR_ATTRIB_VALUE = 'atv';
    +
    +  /**
    +   * A class that indicates a section of markup that is not code, e.g. to allow
    +   * embedding of line numbers within code listings.
    +   */
    +  var PR_NOCODE = 'nocode';
    +
    +  /** A set of tokens that can precede a regular expression literal in
    +    * javascript.
    +    * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full
    +    * list, but I've removed ones that might be problematic when seen in
    +    * languages that don't support regular expression literals.
    +    *
    +    * <p>Specifically, I've removed any keywords that can't precede a regexp
    +    * literal in a syntactically legal javascript program, and I've removed the
    +    * "in" keyword since it's not a keyword in many languages, and might be used
    +    * as a count of inches.
    +    *
    +    * <p>The link a above does not accurately describe EcmaScript rules since
    +    * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
    +    * very well in practice.
    +    *
    +    * @private
    +    */
    +  var REGEXP_PRECEDER_PATTERN = function () {
    +      var preceders = [
    +          "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=",
    +          "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=",
    +          "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";",
    +          "<", "<<", "<<=", "<=", "=", "==", "===", ">",
    +          ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[",
    +          "^", "^=", "^^", "^^=", "{", "|", "|=", "||",
    +          "||=", "~" /* handles =~ and !~ */,
    +          "break", "case", "continue", "delete",
    +          "do", "else", "finally", "instanceof",
    +          "return", "throw", "try", "typeof"
    +          ];
    +      var pattern = '(?:^^|[+-]';
    +      for (var i = 0; i < preceders.length; ++i) {
    +        pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1');
    +      }
    +      pattern += ')\\s*';  // matches at end, and matches empty string
    +      return pattern;
    +      // CAVEAT: this does not properly handle the case where a regular
    +      // expression immediately follows another since a regular expression may
    +      // have flags for case-sensitivity and the like.  Having regexp tokens
    +      // adjacent is not valid in any language I'm aware of, so I'm punting.
    +      // TODO: maybe style special characters inside a regexp as punctuation.
    +    }();
    +
    +  // Define regexps here so that the interpreter doesn't have to create an
    +  // object each time the function containing them is called.
    +  // The language spec requires a new object created even if you don't access
    +  // the $1 members.
    +  var pr_amp = /&/g;
    +  var pr_lt = /</g;
    +  var pr_gt = />/g;
    +  var pr_quot = /\"/g;
    +  /** like textToHtml but escapes double quotes to be attribute safe. */
    +  function attribToHtml(str) {
    +    return str.replace(pr_amp, '&amp;')
    +        .replace(pr_lt, '&lt;')
    +        .replace(pr_gt, '&gt;')
    +        .replace(pr_quot, '&quot;');
    +  }
    +
    +  /** escapest html special characters to html. */
    +  function textToHtml(str) {
    +    return str.replace(pr_amp, '&amp;')
    +        .replace(pr_lt, '&lt;')
    +        .replace(pr_gt, '&gt;');
    +  }
    +
    +
    +  var pr_ltEnt = /&lt;/g;
    +  var pr_gtEnt = /&gt;/g;
    +  var pr_aposEnt = /&apos;/g;
    +  var pr_quotEnt = /&quot;/g;
    +  var pr_ampEnt = /&amp;/g;
    +  var pr_nbspEnt = /&nbsp;/g;
    +  /** unescapes html to plain text. */
    +  function htmlToText(html) {
    +    var pos = html.indexOf('&');
    +    if (pos < 0) { return html; }
    +    // Handle numeric entities specially.  We can't use functional substitution
    +    // since that doesn't work in older versions of Safari.
    +    // These should be rare since most browsers convert them to normal chars.
    +    for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0;) {
    +      var end = html.indexOf(';', pos);
    +      if (end >= 0) {
    +        var num = html.substring(pos + 3, end);
    +        var radix = 10;
    +        if (num && num.charAt(0) === 'x') {
    +          num = num.substring(1);
    +          radix = 16;
    +        }
    +        var codePoint = parseInt(num, radix);
    +        if (!isNaN(codePoint)) {
    +          html = (html.substring(0, pos) + String.fromCharCode(codePoint) +
    +                  html.substring(end + 1));
    +        }
    +      }
    +    }
    +
    +    return html.replace(pr_ltEnt, '<')
    +        .replace(pr_gtEnt, '>')
    +        .replace(pr_aposEnt, "'")
    +        .replace(pr_quotEnt, '"')
    +        .replace(pr_nbspEnt, ' ')
    +        .replace(pr_ampEnt, '&');
    +  }
    +
    +  /** is the given node's innerHTML normally unescaped? */
    +  function isRawContent(node) {
    +    return 'XMP' === node.tagName;
    +  }
    +
    +  var newlineRe = /[\r\n]/g;
    +  /**
    +   * Are newlines and adjacent spaces significant in the given node's innerHTML?
    +   */
    +  function isPreformatted(node, content) {
    +    // PRE means preformatted, and is a very common case, so don't create
    +    // unnecessary computed style objects.
    +    if ('PRE' === node.tagName) { return true; }
    +    if (!newlineRe.test(content)) { return true; }  // Don't care
    +    var whitespace = '';
    +    // For disconnected nodes, IE has no currentStyle.
    +    if (node.currentStyle) {
    +      whitespace = node.currentStyle.whiteSpace;
    +    } else if (window.getComputedStyle) {
    +      // Firefox makes a best guess if node is disconnected whereas Safari
    +      // returns the empty string.
    +      whitespace = window.getComputedStyle(node, null).whiteSpace;
    +    }
    +    return !whitespace || whitespace === 'pre';
    +  }
    +
    +  function normalizedHtml(node, out, opt_sortAttrs) {
    +    switch (node.nodeType) {
    +      case 1:  // an element
    +        var name = node.tagName.toLowerCase();
    +
    +        out.push('<', name);
    +        var attrs = node.attributes;
    +        var n = attrs.length;
    +        if (n) {
    +          if (opt_sortAttrs) {
    +            var sortedAttrs = [];
    +            for (var i = n; --i >= 0;) { sortedAttrs[i] = attrs[i]; }
    +            sortedAttrs.sort(function (a, b) {
    +                return (a.name < b.name) ? -1 : a.name === b.name ? 0 : 1;
    +              });
    +            attrs = sortedAttrs;
    +          }
    +          for (var i = 0; i < n; ++i) {
    +            var attr = attrs[i];
    +            if (!attr.specified) { continue; }
    +            out.push(' ', attr.name.toLowerCase(),
    +                     '="', attribToHtml(attr.value), '"');
    +          }
    +        }
    +        out.push('>');
    +        for (var child = node.firstChild; child; child = child.nextSibling) {
    +          normalizedHtml(child, out, opt_sortAttrs);
    +        }
    +        if (node.firstChild || !/^(?:br|link|img)$/.test(name)) {
    +          out.push('<\/', name, '>');
    +        }
    +        break;
    +      case 3: case 4: // text
    +        out.push(textToHtml(node.nodeValue));
    +        break;
    +    }
    +  }
    +
    +  /**
    +   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
    +   * matches the union o the sets o strings matched d by the input RegExp.
    +   * Since it matches globally, if the input strings have a start-of-input
    +   * anchor (/^.../), it is ignored for the purposes of unioning.
    +   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
    +   * @return {RegExp} a global regex.
    +   */
    +  function combinePrefixPatterns(regexs) {
    +    var capturedGroupIndex = 0;
    +
    +    var needToFoldCase = false;
    +    var ignoreCase = false;
    +    for (var i = 0, n = regexs.length; i < n; ++i) {
    +      var regex = regexs[i];
    +      if (regex.ignoreCase) {
    +        ignoreCase = true;
    +      } else if (/[a-z]/i.test(regex.source.replace(
    +                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
    +        needToFoldCase = true;
    +        ignoreCase = false;
    +        break;
    +      }
    +    }
    +
    +    function decodeEscape(charsetPart) {
    +      if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); }
    +      switch (charsetPart.charAt(1)) {
    +        case 'b': return 8;
    +        case 't': return 9;
    +        case 'n': return 0xa;
    +        case 'v': return 0xb;
    +        case 'f': return 0xc;
    +        case 'r': return 0xd;
    +        case 'u': case 'x':
    +          return parseInt(charsetPart.substring(2), 16)
    +              || charsetPart.charCodeAt(1);
    +        case '0': case '1': case '2': case '3': case '4':
    +        case '5': case '6': case '7':
    +          return parseInt(charsetPart.substring(1), 8);
    +        default: return charsetPart.charCodeAt(1);
    +      }
    +    }
    +
    +    function encodeEscape(charCode) {
    +      if (charCode < 0x20) {
    +        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
    +      }
    +      var ch = String.fromCharCode(charCode);
    +      if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
    +        ch = '\\' + ch;
    +      }
    +      return ch;
    +    }
    +
    +    function caseFoldCharset(charSet) {
    +      var charsetParts = charSet.substring(1, charSet.length - 1).match(
    +          new RegExp(
    +              '\\\\u[0-9A-Fa-f]{4}'
    +              + '|\\\\x[0-9A-Fa-f]{2}'
    +              + '|\\\\[0-3][0-7]{0,2}'
    +              + '|\\\\[0-7]{1,2}'
    +              + '|\\\\[\\s\\S]'
    +              + '|-'
    +              + '|[^-\\\\]',
    +              'g'));
    +      var groups = [];
    +      var ranges = [];
    +      var inverse = charsetParts[0] === '^';
    +      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
    +        var p = charsetParts[i];
    +        switch (p) {
    +          case '\\B': case '\\b':
    +          case '\\D': case '\\d':
    +          case '\\S': case '\\s':
    +          case '\\W': case '\\w':
    +            groups.push(p);
    +            continue;
    +        }
    +        var start = decodeEscape(p);
    +        var end;
    +        if (i + 2 < n && '-' === charsetParts[i + 1]) {
    +          end = decodeEscape(charsetParts[i + 2]);
    +          i += 2;
    +        } else {
    +          end = start;
    +        }
    +        ranges.push([start, end]);
    +        // If the range might intersect letters, then expand it.
    +        if (!(end < 65 || start > 122)) {
    +          if (!(end < 65 || start > 90)) {
    +            ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
    +          }
    +          if (!(end < 97 || start > 122)) {
    +            ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
    +          }
    +        }
    +      }
    +
    +      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
    +      // -> [[1, 12], [14, 14], [16, 17]]
    +      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
    +      var consolidatedRanges = [];
    +      var lastRange = [NaN, NaN];
    +      for (var i = 0; i < ranges.length; ++i) {
    +        var range = ranges[i];
    +        if (range[0] <= lastRange[1] + 1) {
    +          lastRange[1] = Math.max(lastRange[1], range[1]);
    +        } else {
    +          consolidatedRanges.push(lastRange = range);
    +        }
    +      }
    +
    +      var out = ['['];
    +      if (inverse) { out.push('^'); }
    +      out.push.apply(out, groups);
    +      for (var i = 0; i < consolidatedRanges.length; ++i) {
    +        var range = consolidatedRanges[i];
    +        out.push(encodeEscape(range[0]));
    +        if (range[1] > range[0]) {
    +          if (range[1] + 1 > range[0]) { out.push('-'); }
    +          out.push(encodeEscape(range[1]));
    +        }
    +      }
    +      out.push(']');
    +      return out.join('');
    +    }
    +
    +    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
    +      // Split into character sets, escape sequences, punctuation strings
    +      // like ('(', '(?:', ')', '^'), and runs of characters that do not
    +      // include any of the above.
    +      var parts = regex.source.match(
    +          new RegExp(
    +              '(?:'
    +              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
    +              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
    +              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
    +              + '|\\\\[0-9]+'  // a back-reference or octal escape
    +              + '|\\\\[^ux0-9]'  // other escape sequence
    +              + '|\\(\\?[:!=]'  // start of a non-capturing group
    +              + '|[\\(\\)\\^]'  // start/emd of a group, or line start
    +              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
    +              + ')',
    +              'g'));
    +      var n = parts.length;
    +
    +      // Maps captured group numbers to the number they will occupy in
    +      // the output or to -1 if that has not been determined, or to
    +      // undefined if they need not be capturing in the output.
    +      var capturedGroups = [];
    +
    +      // Walk over and identify back references to build the capturedGroups
    +      // mapping.
    +      for (var i = 0, groupIndex = 0; i < n; ++i) {
    +        var p = parts[i];
    +        if (p === '(') {
    +          // groups are 1-indexed, so max group index is count of '('
    +          ++groupIndex;
    +        } else if ('\\' === p.charAt(0)) {
    +          var decimalValue = +p.substring(1);
    +          if (decimalValue && decimalValue <= groupIndex) {
    +            capturedGroups[decimalValue] = -1;
    +          }
    +        }
    +      }
    +
    +      // Renumber groups and reduce capturing groups to non-capturing groups
    +      // where possible.
    +      for (var i = 1; i < capturedGroups.length; ++i) {
    +        if (-1 === capturedGroups[i]) {
    +          capturedGroups[i] = ++capturedGroupIndex;
    +        }
    +      }
    +      for (var i = 0, groupIndex = 0; i < n; ++i) {
    +        var p = parts[i];
    +        if (p === '(') {
    +          ++groupIndex;
    +          if (capturedGroups[groupIndex] === undefined) {
    +            parts[i] = '(?:';
    +          }
    +        } else if ('\\' === p.charAt(0)) {
    +          var decimalValue = +p.substring(1);
    +          if (decimalValue && decimalValue <= groupIndex) {
    +            parts[i] = '\\' + capturedGroups[groupIndex];
    +          }
    +        }
    +      }
    +
    +      // Remove any prefix anchors so that the output will match anywhere.
    +      // ^^ really does mean an anchored match though.
    +      for (var i = 0, groupIndex = 0; i < n; ++i) {
    +        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
    +      }
    +
    +      // Expand letters to groupts to handle mixing of case-sensitive and
    +      // case-insensitive patterns if necessary.
    +      if (regex.ignoreCase && needToFoldCase) {
    +        for (var i = 0; i < n; ++i) {
    +          var p = parts[i];
    +          var ch0 = p.charAt(0);
    +          if (p.length >= 2 && ch0 === '[') {
    +            parts[i] = caseFoldCharset(p);
    +          } else if (ch0 !== '\\') {
    +            // TODO: handle letters in numeric escapes.
    +            parts[i] = p.replace(
    +                /[a-zA-Z]/g,
    +                function (ch) {
    +                  var cc = ch.charCodeAt(0);
    +                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
    +                });
    +          }
    +        }
    +      }
    +
    +      return parts.join('');
    +    }
    +
    +    var rewritten = [];
    +    for (var i = 0, n = regexs.length; i < n; ++i) {
    +      var regex = regexs[i];
    +      if (regex.global || regex.multiline) { throw new Error('' + regex); }
    +      rewritten.push(
    +          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
    +    }
    +
    +    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
    +  }
    +
    +  var PR_innerHtmlWorks = null;
    +  function getInnerHtml(node) {
    +    // inner html is hopelessly broken in Safari 2.0.4 when the content is
    +    // an html description of well formed XML and the containing tag is a PRE
    +    // tag, so we detect that case and emulate innerHTML.
    +    if (null === PR_innerHtmlWorks) {
    +      var testNode = document.createElement('PRE');
    +      testNode.appendChild(
    +          document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));
    +      PR_innerHtmlWorks = !/</.test(testNode.innerHTML);
    +    }
    +
    +    if (PR_innerHtmlWorks) {
    +      var content = node.innerHTML;
    +      // XMP tags contain unescaped entities so require special handling.
    +      if (isRawContent(node)) {
    +        content = textToHtml(content);
    +      } else if (!isPreformatted(node, content)) {
    +        content = content.replace(/(<br\s*\/?>)[\r\n]+/g, '$1')
    +            .replace(/(?:[\r\n]+[ \t]*)+/g, ' ');
    +      }
    +      return content;
    +    }
    +
    +    var out = [];
    +    for (var child = node.firstChild; child; child = child.nextSibling) {
    +      normalizedHtml(child, out);
    +    }
    +    return out.join('');
    +  }
    +
    +  /** returns a function that expand tabs to spaces.  This function can be fed
    +    * successive chunks of text, and will maintain its own internal state to
    +    * keep track of how tabs are expanded.
    +    * @return {function (string) : string} a function that takes
    +    *   plain text and return the text with tabs expanded.
    +    * @private
    +    */
    +  function makeTabExpander(tabWidth) {
    +    var SPACES = '                ';
    +    var charInLine = 0;
    +
    +    return function (plainText) {
    +      // walk over each character looking for tabs and newlines.
    +      // On tabs, expand them.  On newlines, reset charInLine.
    +      // Otherwise increment charInLine
    +      var out = null;
    +      var pos = 0;
    +      for (var i = 0, n = plainText.length; i < n; ++i) {
    +        var ch = plainText.charAt(i);
    +
    +        switch (ch) {
    +          case '\t':
    +            if (!out) { out = []; }
    +            out.push(plainText.substring(pos, i));
    +            // calculate how much space we need in front of this part
    +            // nSpaces is the amount of padding -- the number of spaces needed
    +            // to move us to the next column, where columns occur at factors of
    +            // tabWidth.
    +            var nSpaces = tabWidth - (charInLine % tabWidth);
    +            charInLine += nSpaces;
    +            for (; nSpaces >= 0; nSpaces -= SPACES.length) {
    +              out.push(SPACES.substring(0, nSpaces));
    +            }
    +            pos = i + 1;
    +            break;
    +          case '\n':
    +            charInLine = 0;
    +            break;
    +          default:
    +            ++charInLine;
    +        }
    +      }
    +      if (!out) { return plainText; }
    +      out.push(plainText.substring(pos));
    +      return out.join('');
    +    };
    +  }
    +
    +  var pr_chunkPattern = new RegExp(
    +      '[^<]+'  // A run of characters other than '<'
    +      + '|<\!--[\\s\\S]*?--\>'  // an HTML comment
    +      + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>'  // a CDATA section
    +      // a probable tag that should not be highlighted
    +      + '|<\/?[a-zA-Z](?:[^>\"\']|\'[^\']*\'|\"[^\"]*\")*>'
    +      + '|<',  // A '<' that does not begin a larger chunk
    +      'g');
    +  var pr_commentPrefix = /^<\!--/;
    +  var pr_cdataPrefix = /^<!\[CDATA\[/;
    +  var pr_brPrefix = /^<br\b/i;
    +  var pr_tagNameRe = /^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/;
    +
    +  /** split markup into chunks of html tags (style null) and
    +    * plain text (style {@link #PR_PLAIN}), converting tags which are
    +    * significant for tokenization (<br>) into their textual equivalent.
    +    *
    +    * @param {string} s html where whitespace is considered significant.
    +    * @return {Object} source code and extracted tags.
    +    * @private
    +    */
    +  function extractTags(s) {
    +    // since the pattern has the 'g' modifier and defines no capturing groups,
    +    // this will return a list of all chunks which we then classify and wrap as
    +    // PR_Tokens
    +    var matches = s.match(pr_chunkPattern);
    +    var sourceBuf = [];
    +    var sourceBufLen = 0;
    +    var extractedTags = [];
    +    if (matches) {
    +      for (var i = 0, n = matches.length; i < n; ++i) {
    +        var match = matches[i];
    +        if (match.length > 1 && match.charAt(0) === '<') {
    +          if (pr_commentPrefix.test(match)) { continue; }
    +          if (pr_cdataPrefix.test(match)) {
    +            // strip CDATA prefix and suffix.  Don't unescape since it's CDATA
    +            sourceBuf.push(match.substring(9, match.length - 3));
    +            sourceBufLen += match.length - 12;
    +          } else if (pr_brPrefix.test(match)) {
    +            // <br> tags are lexically significant so convert them to text.
    +            // This is undone later.
    +            sourceBuf.push('\n');
    +            ++sourceBufLen;
    +          } else {
    +            if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) {
    +              // A <span class="nocode"> will start a section that should be
    +              // ignored.  Continue walking the list until we see a matching end
    +              // tag.
    +              var name = match.match(pr_tagNameRe)[2];
    +              var depth = 1;
    +              var j;
    +              end_tag_loop:
    +              for (j = i + 1; j < n; ++j) {
    +                var name2 = matches[j].match(pr_tagNameRe);
    +                if (name2 && name2[2] === name) {
    +                  if (name2[1] === '/') {
    +                    if (--depth === 0) { break end_tag_loop; }
    +                  } else {
    +                    ++depth;
    +                  }
    +                }
    +              }
    +              if (j < n) {
    +                extractedTags.push(
    +                    sourceBufLen, matches.slice(i, j + 1).join(''));
    +                i = j;
    +              } else {  // Ignore unclosed sections.
    +                extractedTags.push(sourceBufLen, match);
    +              }
    +            } else {
    +              extractedTags.push(sourceBufLen, match);
    +            }
    +          }
    +        } else {
    +          var literalText = htmlToText(match);
    +          sourceBuf.push(literalText);
    +          sourceBufLen += literalText.length;
    +        }
    +      }
    +    }
    +    return { source: sourceBuf.join(''), tags: extractedTags };
    +  }
    +
    +  /** True if the given tag contains a class attribute with the nocode class. */
    +  function isNoCodeTag(tag) {
    +    return !!tag
    +        // First canonicalize the representation of attributes
    +        .replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,
    +                 ' $1="$2$3$4"')
    +        // Then look for the attribute we want.
    +        .match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/);
    +  }
    +
    +  /**
    +   * Apply the given language handler to sourceCode and add the resulting
    +   * decorations to out.
    +   * @param {number} basePos the index of sourceCode within the chunk of source
    +   *    whose decorations are already present on out.
    +   */
    +  function appendDecorations(basePos, sourceCode, langHandler, out) {
    +    if (!sourceCode) { return; }
    +    var job = {
    +      source: sourceCode,
    +      basePos: basePos
    +    };
    +    langHandler(job);
    +    out.push.apply(out, job.decorations);
    +  }
    +
    +  /** Given triples of [style, pattern, context] returns a lexing function,
    +    * The lexing function interprets the patterns to find token boundaries and
    +    * returns a decoration list of the form
    +    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
    +    * where index_n is an index into the sourceCode, and style_n is a style
    +    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
    +    * all characters in sourceCode[index_n-1:index_n].
    +    *
    +    * The stylePatterns is a list whose elements have the form
    +    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
    +    *
    +    * Style is a style constant like PR_PLAIN, or can be a string of the
    +    * form 'lang-FOO', where FOO is a language extension describing the
    +    * language of the portion of the token in $1 after pattern executes.
    +    * E.g., if style is 'lang-lisp', and group 1 contains the text
    +    * '(hello (world))', then that portion of the token will be passed to the
    +    * registered lisp handler for formatting.
    +    * The text before and after group 1 will be restyled using this decorator
    +    * so decorators should take care that this doesn't result in infinite
    +    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
    +    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
    +    * '<script>foo()<\/script>', which would cause the current decorator to
    +    * be called with '<script>' which would not match the same rule since
    +    * group 1 must not be empty, so it would be instead styled as PR_TAG by
    +    * the generic tag rule.  The handler registered for the 'js' extension would
    +    * then be called with 'foo()', and finally, the current decorator would
    +    * be called with '<\/script>' which would not match the original rule and
    +    * so the generic tag rule would identify it as a tag.
    +    *
    +    * Pattern must only match prefixes, and if it matches a prefix, then that
    +    * match is considered a token with the same style.
    +    *
    +    * Context is applied to the last non-whitespace, non-comment token
    +    * recognized.
    +    *
    +    * Shortcut is an optional string of characters, any of which, if the first
    +    * character, gurantee that this pattern and only this pattern matches.
    +    *
    +    * @param {Array} shortcutStylePatterns patterns that always start with
    +    *   a known character.  Must have a shortcut string.
    +    * @param {Array} fallthroughStylePatterns patterns that will be tried in
    +    *   order if the shortcut ones fail.  May have shortcuts.
    +    *
    +    * @return {function (Object)} a
    +    *   function that takes source code and returns a list of decorations.
    +    */
    +  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
    +    var shortcuts = {};
    +    var tokenizer;
    +    (function () {
    +      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
    +      var allRegexs = [];
    +      var regexKeys = {};
    +      for (var i = 0, n = allPatterns.length; i < n; ++i) {
    +        var patternParts = allPatterns[i];
    +        var shortcutChars = patternParts[3];
    +        if (shortcutChars) {
    +          for (var c = shortcutChars.length; --c >= 0;) {
    +            shortcuts[shortcutChars.charAt(c)] = patternParts;
    +          }
    +        }
    +        var regex = patternParts[1];
    +        var k = '' + regex;
    +        if (!regexKeys.hasOwnProperty(k)) {
    +          allRegexs.push(regex);
    +          regexKeys[k] = null;
    +        }
    +      }
    +      allRegexs.push(/[\0-\uffff]/);
    +      tokenizer = combinePrefixPatterns(allRegexs);
    +    })();
    +
    +    var nPatterns = fallthroughStylePatterns.length;
    +    var notWs = /\S/;
    +
    +    /**
    +     * Lexes job.source and produces an output array job.decorations of style
    +     * classes preceded by the position at which they start in job.source in
    +     * order.
    +     *
    +     * @param {Object} job an object like {@code
    +     *    source: {string} sourceText plain text,
    +     *    basePos: {int} position of job.source in the larger chunk of
    +     *        sourceCode.
    +     * }
    +     */
    +    var decorate = function (job) {
    +      var sourceCode = job.source, basePos = job.basePos;
    +      /** Even entries are positions in source in ascending order.  Odd enties
    +        * are style markers (e.g., PR_COMMENT) that run from that position until
    +        * the end.
    +        * @type {Array.<number|string>}
    +        */
    +      var decorations = [basePos, PR_PLAIN];
    +      var pos = 0;  // index into sourceCode
    +      var tokens = sourceCode.match(tokenizer) || [];
    +      var styleCache = {};
    +
    +      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
    +        var token = tokens[ti];
    +        var style = styleCache[token];
    +        var match = void 0;
    +
    +        var isEmbedded;
    +        if (typeof style === 'string') {
    +          isEmbedded = false;
    +        } else {
    +          var patternParts = shortcuts[token.charAt(0)];
    +          if (patternParts) {
    +            match = token.match(patternParts[1]);
    +            style = patternParts[0];
    +          } else {
    +            for (var i = 0; i < nPatterns; ++i) {
    +              patternParts = fallthroughStylePatterns[i];
    +              match = token.match(patternParts[1]);
    +              if (match) {
    +                style = patternParts[0];
    +                break;
    +              }
    +            }
    +
    +            if (!match) {  // make sure that we make progress
    +              style = PR_PLAIN;
    +            }
    +          }
    +
    +          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
    +          if (isEmbedded && !(match && typeof match[1] === 'string')) {
    +            isEmbedded = false;
    +            style = PR_SOURCE;
    +          }
    +
    +          if (!isEmbedded) { styleCache[token] = style; }
    +        }
    +
    +        var tokenStart = pos;
    +        pos += token.length;
    +
    +        if (!isEmbedded) {
    +          decorations.push(basePos + tokenStart, style);
    +        } else {  // Treat group 1 as an embedded block of source code.
    +          var embeddedSource = match[1];
    +          var embeddedSourceStart = token.indexOf(embeddedSource);
    +          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
    +          if (match[2]) {
    +            // If embeddedSource can be blank, then it would match at the
    +            // beginning which would cause us to infinitely recurse on the
    +            // entire token, so we catch the right context in match[2].
    +            embeddedSourceEnd = token.length - match[2].length;
    +            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
    +          }
    +          var lang = style.substring(5);
    +          // Decorate the left of the embedded source
    +          appendDecorations(
    +              basePos + tokenStart,
    +              token.substring(0, embeddedSourceStart),
    +              decorate, decorations);
    +          // Decorate the embedded source
    +          appendDecorations(
    +              basePos + tokenStart + embeddedSourceStart,
    +              embeddedSource,
    +              langHandlerForExtension(lang, embeddedSource),
    +              decorations);
    +          // Decorate the right of the embedded section
    +          appendDecorations(
    +              basePos + tokenStart + embeddedSourceEnd,
    +              token.substring(embeddedSourceEnd),
    +              decorate, decorations);
    +        }
    +      }
    +      job.decorations = decorations;
    +    };
    +    return decorate;
    +  }
    +
    +  /** returns a function that produces a list of decorations from source text.
    +    *
    +    * This code treats ", ', and ` as string delimiters, and \ as a string
    +    * escape.  It does not recognize perl's qq() style strings.
    +    * It has no special handling for double delimiter escapes as in basic, or
    +    * the tripled delimiters used in python, but should work on those regardless
    +    * although in those cases a single string literal may be broken up into
    +    * multiple adjacent string literals.
    +    *
    +    * It recognizes C, C++, and shell style comments.
    +    *
    +    * @param {Object} options a set of optional parameters.
    +    * @return {function (Object)} a function that examines the source code
    +    *     in the input job and builds the decoration list.
    +    */
    +  function sourceDecorator(options) {
    +    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
    +    if (options['tripleQuotedStrings']) {
    +      // '''multi-line-string''', 'single-line-string', and double-quoted
    +      shortcutStylePatterns.push(
    +          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
    +           null, '\'"']);
    +    } else if (options['multiLineStrings']) {
    +      // 'multi-line-string', "multi-line-string"
    +      shortcutStylePatterns.push(
    +          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
    +           null, '\'"`']);
    +    } else {
    +      // 'single-line-string', "single-line-string"
    +      shortcutStylePatterns.push(
    +          [PR_STRING,
    +           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
    +           null, '"\'']);
    +    }
    +    if (options['verbatimStrings']) {
    +      // verbatim-string-literal production from the C# grammar.  See issue 93.
    +      fallthroughStylePatterns.push(
    +          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
    +    }
    +    if (options['hashComments']) {
    +      if (options['cStyleComments']) {
    +        // Stop C preprocessor declarations at an unclosed open comment
    +        shortcutStylePatterns.push(
    +            [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
    +             null, '#']);
    +        fallthroughStylePatterns.push(
    +            [PR_STRING,
    +             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
    +             null]);
    +      } else {
    +        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
    +      }
    +    }
    +    if (options['cStyleComments']) {
    +      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
    +      fallthroughStylePatterns.push(
    +          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
    +    }
    +    if (options['regexLiterals']) {
    +      var REGEX_LITERAL = (
    +          // A regular expression literal starts with a slash that is
    +          // not followed by * or / so that it is not confused with
    +          // comments.
    +          '/(?=[^/*])'
    +          // and then contains any number of raw characters,
    +          + '(?:[^/\\x5B\\x5C]'
    +          // escape sequences (\x5C),
    +          +    '|\\x5C[\\s\\S]'
    +          // or non-nesting character sets (\x5B\x5D);
    +          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
    +          // finally closed by a /.
    +          + '/');
    +      fallthroughStylePatterns.push(
    +          ['lang-regex',
    +           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
    +           ]);
    +    }
    +
    +    var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
    +    if (keywords.length) {
    +      fallthroughStylePatterns.push(
    +          [PR_KEYWORD,
    +           new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]);
    +    }
    +
    +    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
    +    fallthroughStylePatterns.push(
    +        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
    +        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
    +        [PR_TYPE,        /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
    +        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
    +        [PR_LITERAL,
    +         new RegExp(
    +             '^(?:'
    +             // A hex number
    +             + '0x[a-f0-9]+'
    +             // or an octal or decimal number,
    +             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
    +             // possibly in scientific notation
    +             + '(?:e[+\\-]?\\d+)?'
    +             + ')'
    +             // with an optional modifier like UL for unsigned long
    +             + '[a-z]*', 'i'),
    +         null, '0123456789'],
    +        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null]);
    +
    +    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
    +  }
    +
    +  var decorateSource = sourceDecorator({
    +        'keywords': ALL_KEYWORDS,
    +        'hashComments': true,
    +        'cStyleComments': true,
    +        'multiLineStrings': true,
    +        'regexLiterals': true
    +      });
    +
    +  /** Breaks {@code job.source} around style boundaries in
    +    * {@code job.decorations} while re-interleaving {@code job.extractedTags},
    +    * and leaves the result in {@code job.prettyPrintedHtml}.
    +    * @param {Object} job like {
    +    *    source: {string} source as plain text,
    +    *    extractedTags: {Array.<number|string>} extractedTags chunks of raw
    +    *                   html preceded by their position in {@code job.source}
    +    *                   in order
    +    *    decorations: {Array.<number|string} an array of style classes preceded
    +    *                 by the position at which they start in job.source in order
    +    * }
    +    * @private
    +    */
    +  function recombineTagsAndDecorations(job) {
    +    var sourceText = job.source;
    +    var extractedTags = job.extractedTags;
    +    var decorations = job.decorations;
    +
    +    var html = [];
    +    // index past the last char in sourceText written to html
    +    var outputIdx = 0;
    +
    +    var openDecoration = null;
    +    var currentDecoration = null;
    +    var tagPos = 0;  // index into extractedTags
    +    var decPos = 0;  // index into decorations
    +    var tabExpander = makeTabExpander(window['PR_TAB_WIDTH']);
    +
    +    var adjacentSpaceRe = /([\r\n ]) /g;
    +    var startOrSpaceRe = /(^| ) /gm;
    +    var newlineRe = /\r\n?|\n/g;
    +    var trailingSpaceRe = /[ \r\n]$/;
    +    var lastWasSpace = true;  // the last text chunk emitted ended with a space.
    +
    +    // See bug 71 and http://stackoverflow.com/questions/136443/why-doesnt-ie7-
    +    var isIE678 = window['_pr_isIE6']();
    +    var lineBreakHtml = (
    +        isIE678
    +        ? (job.sourceNode.tagName === 'PRE'
    +           // Use line feeds instead of <br>s so that copying and pasting works
    +           // on IE.
    +           // Doing this on other browsers breaks lots of stuff since \r\n is
    +           // treated as two newlines on Firefox.
    +           ? (isIE678 === 6 ? '&#160;\r\n' :
    +              isIE678 === 7 ? '&#160;<br>\r' : '&#160;\r')
    +           // IE collapses multiple adjacent <br>s into 1 line break.
    +           // Prefix every newline with '&#160;' to prevent such behavior.
    +           // &nbsp; is the same as &#160; but works in XML as well as HTML.
    +           : '&#160;<br />')
    +        : '<br />');
    +
    +    // Look for a class like linenums or linenums:<n> where <n> is the 1-indexed
    +    // number of the first line.
    +    var numberLines = job.sourceNode.className.match(/\blinenums\b(?::(\d+))?/);
    +    var lineBreaker;
    +    if (numberLines) {
    +      var lineBreaks = [];
    +      for (var i = 0; i < 10; ++i) {
    +        lineBreaks[i] = lineBreakHtml + '</li><li class="L' + i + '">';
    +      }
    +      var lineNum = numberLines[1] && numberLines[1].length
    +          ? numberLines[1] - 1 : 0;  // Lines are 1-indexed
    +      html.push('<ol class="linenums"><li class="L', (lineNum) % 10, '"');
    +      if (lineNum) {
    +        html.push(' value="', lineNum + 1, '"');
    +      }
    +      html.push('>');
    +      lineBreaker = function () {
    +        var lb = lineBreaks[++lineNum % 10];
    +        // If a decoration is open, we need to close it before closing a list-item
    +        // and reopen it on the other side of the list item.
    +        return openDecoration
    +            ? ('</span>' + lb + '<span class="' + openDecoration + '">') : lb;
    +      };
    +    } else {
    +      lineBreaker = lineBreakHtml;
    +    }
    +
    +    // A helper function that is responsible for opening sections of decoration
    +    // and outputing properly escaped chunks of source
    +    function emitTextUpTo(sourceIdx) {
    +      if (sourceIdx > outputIdx) {
    +        if (openDecoration && openDecoration !== currentDecoration) {
    +          // Close the current decoration
    +          html.push('</span>');
    +          openDecoration = null;
    +        }
    +        if (!openDecoration && currentDecoration) {
    +          openDecoration = currentDecoration;
    +          html.push('<span class="', openDecoration, '">');
    +        }
    +        // This interacts badly with some wikis which introduces paragraph tags
    +        // into pre blocks for some strange reason.
    +        // It's necessary for IE though which seems to lose the preformattedness
    +        // of <pre> tags when their innerHTML is assigned.
    +        // http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html
    +        // and it serves to undo the conversion of <br>s to newlines done in
    +        // chunkify.
    +        var htmlChunk = textToHtml(
    +            tabExpander(sourceText.substring(outputIdx, sourceIdx)))
    +            .replace(lastWasSpace
    +                     ? startOrSpaceRe
    +                     : adjacentSpaceRe, '$1&#160;');
    +        // Keep track of whether we need to escape space at the beginning of the
    +        // next chunk.
    +        lastWasSpace = trailingSpaceRe.test(htmlChunk);
    +        html.push(htmlChunk.replace(newlineRe, lineBreaker));
    +        outputIdx = sourceIdx;
    +      }
    +    }
    +
    +    while (true) {
    +      // Determine if we're going to consume a tag this time around.  Otherwise
    +      // we consume a decoration or exit.
    +      var outputTag;
    +      if (tagPos < extractedTags.length) {
    +        if (decPos < decorations.length) {
    +          // Pick one giving preference to extractedTags since we shouldn't open
    +          // a new style that we're going to have to immediately close in order
    +          // to output a tag.
    +          outputTag = extractedTags[tagPos] <= decorations[decPos];
    +        } else {
    +          outputTag = true;
    +        }
    +      } else {
    +        outputTag = false;
    +      }
    +      // Consume either a decoration or a tag or exit.
    +      if (outputTag) {
    +        emitTextUpTo(extractedTags[tagPos]);
    +        if (openDecoration) {
    +          // Close the current decoration
    +          html.push('</span>');
    +          openDecoration = null;
    +        }
    +        html.push(extractedTags[tagPos + 1]);
    +        tagPos += 2;
    +      } else if (decPos < decorations.length) {
    +        emitTextUpTo(decorations[decPos]);
    +        currentDecoration = decorations[decPos + 1];
    +        decPos += 2;
    +      } else {
    +        break;
    +      }
    +    }
    +    emitTextUpTo(sourceText.length);
    +    if (openDecoration) {
    +      html.push('</span>');
    +    }
    +    if (numberLines) { html.push('</li></ol>'); }
    +    job.prettyPrintedHtml = html.join('');
    +  }
    +
    +  /** Maps language-specific file extensions to handlers. */
    +  var langHandlerRegistry = {};
    +  /** Register a language handler for the given file extensions.
    +    * @param {function (Object)} handler a function from source code to a list
    +    *      of decorations.  Takes a single argument job which describes the
    +    *      state of the computation.   The single parameter has the form
    +    *      {@code {
    +    *        source: {string} as plain text.
    +    *        decorations: {Array.<number|string>} an array of style classes
    +    *                     preceded by the position at which they start in
    +    *                     job.source in order.
    +    *                     The language handler should assigned this field.
    +    *        basePos: {int} the position of source in the larger source chunk.
    +    *                 All positions in the output decorations array are relative
    +    *                 to the larger source chunk.
    +    *      } }
    +    * @param {Array.<string>} fileExtensions
    +    */
    +  function registerLangHandler(handler, fileExtensions) {
    +    for (var i = fileExtensions.length; --i >= 0;) {
    +      var ext = fileExtensions[i];
    +      if (!langHandlerRegistry.hasOwnProperty(ext)) {
    +        langHandlerRegistry[ext] = handler;
    +      } else if ('console' in window) {
    +        console['warn']('cannot override language handler %s', ext);
    +      }
    +    }
    +  }
    +  function langHandlerForExtension(extension, source) {
    +    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
    +      // Treat it as markup if the first non whitespace character is a < and
    +      // the last non-whitespace character is a >.
    +      extension = /^\s*</.test(source)
    +          ? 'default-markup'
    +          : 'default-code';
    +    }
    +    return langHandlerRegistry[extension];
    +  }
    +  registerLangHandler(decorateSource, ['default-code']);
    +  registerLangHandler(
    +      createSimpleLexer(
    +          [],
    +          [
    +           [PR_PLAIN,       /^[^<?]+/],
    +           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
    +           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
    +           // Unescaped content in an unknown language
    +           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
    +           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
    +           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
    +           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
    +           // Unescaped content in javascript.  (Or possibly vbscript).
    +           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
    +           // Contains unescaped stylesheet content
    +           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
    +           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
    +          ]),
    +      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
    +  registerLangHandler(
    +      createSimpleLexer(
    +          [
    +           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
    +           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
    +           ],
    +          [
    +           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
    +           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
    +           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
    +           [PR_PUNCTUATION,  /^[=<>\/]+/],
    +           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
    +           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
    +           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
    +           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
    +           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
    +           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
    +           ]),
    +      ['in.tag']);
    +  registerLangHandler(
    +      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': CPP_KEYWORDS,
    +          'hashComments': true,
    +          'cStyleComments': true
    +        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': 'null true false'
    +        }), ['json']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': CSHARP_KEYWORDS,
    +          'hashComments': true,
    +          'cStyleComments': true,
    +          'verbatimStrings': true
    +        }), ['cs']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': JAVA_KEYWORDS,
    +          'cStyleComments': true
    +        }), ['java']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': SH_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true
    +        }), ['bsh', 'csh', 'sh']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': PYTHON_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true,
    +          'tripleQuotedStrings': true
    +        }), ['cv', 'py']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': PERL_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true,
    +          'regexLiterals': true
    +        }), ['perl', 'pl', 'pm']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': RUBY_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true,
    +          'regexLiterals': true
    +        }), ['rb']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': JSCRIPT_KEYWORDS,
    +          'cStyleComments': true,
    +          'regexLiterals': true
    +        }), ['js']);
    +  registerLangHandler(
    +      createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
    +
    +  function applyDecorator(job) {
    +    var sourceCodeHtml = job.sourceCodeHtml;
    +    var opt_langExtension = job.langExtension;
    +
    +    // Prepopulate output in case processing fails with an exception.
    +    job.prettyPrintedHtml = sourceCodeHtml;
    +
    +    try {
    +      // Extract tags, and convert the source code to plain text.
    +      var sourceAndExtractedTags = extractTags(sourceCodeHtml);
    +      /** Plain text. @type {string} */
    +      var source = sourceAndExtractedTags.source;
    +      job.source = source;
    +      job.basePos = 0;
    +
    +      /** Even entries are positions in source in ascending order.  Odd entries
    +        * are tags that were extracted at that position.
    +        * @type {Array.<number|string>}
    +        */
    +      job.extractedTags = sourceAndExtractedTags.tags;
    +
    +      // Apply the appropriate language handler
    +      langHandlerForExtension(opt_langExtension, source)(job);
    +      // Integrate the decorations and tags back into the source code to produce
    +      // a decorated html string which is left in job.prettyPrintedHtml.
    +      recombineTagsAndDecorations(job);
    +    } catch (e) {
    +      if ('console' in window) {
    +        console['log'](e && e['stack'] ? e['stack'] : e);
    +      }
    +    }
    +  }
    +
    +  function prettyPrintOne(sourceCodeHtml, opt_langExtension) {
    +    var job = {
    +      sourceCodeHtml: sourceCodeHtml,
    +      langExtension: opt_langExtension
    +    };
    +    applyDecorator(job);
    +    return job.prettyPrintedHtml;
    +  }
    +
    +  function prettyPrint(opt_whenDone) {
    +    function byTagName(tn) { return document.getElementsByTagName(tn); }
    +    // fetch a list of nodes to rewrite
    +    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
    +    var elements = [];
    +    for (var i = 0; i < codeSegments.length; ++i) {
    +      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
    +        elements.push(codeSegments[i][j]);
    +      }
    +    }
    +    codeSegments = null;
    +
    +    var clock = Date;
    +    if (!clock['now']) {
    +      clock = { 'now': function () { return (new Date).getTime(); } };
    +    }
    +
    +    // The loop is broken into a series of continuations to make sure that we
    +    // don't make the browser unresponsive when rewriting a large page.
    +    var k = 0;
    +    var prettyPrintingJob;
    +
    +    function doWork() {
    +      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
    +                     clock.now() + 250 /* ms */ :
    +                     Infinity);
    +      for (; k < elements.length && clock.now() < endTime; k++) {
    +        var cs = elements[k];
    +        // [JACOCO] 'prettyprint' -> 'source'
    +        if (cs.className && cs.className.indexOf('source') >= 0) {
    +          // If the classes includes a language extensions, use it.
    +          // Language extensions can be specified like
    +          //     <pre class="prettyprint lang-cpp">
    +          // the language extension "cpp" is used to find a language handler as
    +          // passed to PR_registerLangHandler.
    +          var langExtension = cs.className.match(/\blang-(\w+)\b/);
    +          if (langExtension) { langExtension = langExtension[1]; }
    +
    +          // make sure this is not nested in an already prettified element
    +          var nested = false;
    +          for (var p = cs.parentNode; p; p = p.parentNode) {
    +            if ((p.tagName === 'pre' || p.tagName === 'code' ||
    +                 p.tagName === 'xmp') &&
    +                // [JACOCO] 'prettyprint' -> 'source'
    +                p.className && p.className.indexOf('source') >= 0) {
    +              nested = true;
    +              break;
    +            }
    +          }
    +          if (!nested) {
    +            // fetch the content as a snippet of properly escaped HTML.
    +            // Firefox adds newlines at the end.
    +            var content = getInnerHtml(cs);
    +            content = content.replace(/(?:\r\n?|\n)$/, '');
    +
    +            // do the pretty printing
    +            prettyPrintingJob = {
    +              sourceCodeHtml: content,
    +              langExtension: langExtension,
    +              sourceNode: cs
    +            };
    +            applyDecorator(prettyPrintingJob);
    +            replaceWithPrettyPrintedHtml();
    +          }
    +        }
    +      }
    +      if (k < elements.length) {
    +        // finish up in a continuation
    +        setTimeout(doWork, 250);
    +      } else if (opt_whenDone) {
    +        opt_whenDone();
    +      }
    +    }
    +
    +    function replaceWithPrettyPrintedHtml() {
    +      var newContent = prettyPrintingJob.prettyPrintedHtml;
    +      if (!newContent) { return; }
    +      var cs = prettyPrintingJob.sourceNode;
    +
    +      // push the prettified html back into the tag.
    +      if (!isRawContent(cs)) {
    +        // just replace the old html with the new
    +        cs.innerHTML = newContent;
    +      } else {
    +        // we need to change the tag to a <pre> since <xmp>s do not allow
    +        // embedded tags such as the span tags used to attach styles to
    +        // sections of source code.
    +        var pre = document.createElement('PRE');
    +        for (var i = 0; i < cs.attributes.length; ++i) {
    +          var a = cs.attributes[i];
    +          if (a.specified) {
    +            var aname = a.name.toLowerCase();
    +            if (aname === 'class') {
    +              pre.className = a.value;  // For IE 6
    +            } else {
    +              pre.setAttribute(a.name, a.value);
    +            }
    +          }
    +        }
    +        pre.innerHTML = newContent;
    +
    +        // remove the old
    +        cs.parentNode.replaceChild(pre, cs);
    +        cs = pre;
    +      }
    +    }
    +
    +    doWork();
    +  }
    +
    +  window['PR_normalizedHtml'] = normalizedHtml;
    +  window['prettyPrintOne'] = prettyPrintOne;
    +  window['prettyPrint'] = prettyPrint;
    +  window['PR'] = {
    +        'combinePrefixPatterns': combinePrefixPatterns,
    +        'createSimpleLexer': createSimpleLexer,
    +        'registerLangHandler': registerLangHandler,
    +        'sourceDecorator': sourceDecorator,
    +        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
    +        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
    +        'PR_COMMENT': PR_COMMENT,
    +        'PR_DECLARATION': PR_DECLARATION,
    +        'PR_KEYWORD': PR_KEYWORD,
    +        'PR_LITERAL': PR_LITERAL,
    +        'PR_NOCODE': PR_NOCODE,
    +        'PR_PLAIN': PR_PLAIN,
    +        'PR_PUNCTUATION': PR_PUNCTUATION,
    +        'PR_SOURCE': PR_SOURCE,
    +        'PR_STRING': PR_STRING,
    +        'PR_TAG': PR_TAG,
    +        'PR_TYPE': PR_TYPE
    +      };
    +})();
    diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/redbar.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/redbar.gif
    new file mode 100644
    index 0000000..c2f7146
    Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/redbar.gif differ
    diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/report.css b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/report.css
    new file mode 100644
    index 0000000..dd936bc
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/report.css
    @@ -0,0 +1,243 @@
    +body, td {
    +  font-family:sans-serif;
    +  font-size:10pt;
    +}
    +
    +h1 {
    +  font-weight:bold;
    +  font-size:18pt;
    +}
    +
    +.breadcrumb {
    +  border:#d6d3ce 1px solid;
    +  padding:2px 4px 2px 4px;
    +}
    +
    +.breadcrumb .info {
    +  float:right;
    +}
    +
    +.breadcrumb .info a {
    +  margin-left:8px;
    +}
    +
    +.el_report {
    +  padding-left:18px;
    +  background-image:url(report.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_group {
    +  padding-left:18px;
    +  background-image:url(group.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_bundle {
    +  padding-left:18px;
    +  background-image:url(bundle.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_package {
    +  padding-left:18px;
    +  background-image:url(package.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_class {
    +  padding-left:18px;
    +  background-image:url(class.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_source {
    +  padding-left:18px;
    +  background-image:url(source.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_method {
    +  padding-left:18px;
    +  background-image:url(method.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_session {
    +  padding-left:18px;
    +  background-image:url(session.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +pre.source {
    +  border:#d6d3ce 1px solid;
    +  font-family:monospace;
    +}
    +
    +pre.source ol {
    +  margin-bottom: 0px;
    +  margin-top: 0px;
    +}
    +
    +pre.source li {
    +  border-left: 1px solid #D6D3CE;
    +  color: #A0A0A0;
    +  padding-left: 0px;
    +}
    +
    +pre.source span.fc {
    +  background-color:#ccffcc;
    +}
    +
    +pre.source span.nc {
    +  background-color:#ffaaaa;
    +}
    +
    +pre.source span.pc {
    +  background-color:#ffffcc;
    +}
    +
    +pre.source span.bfc {
    +  background-image: url(branchfc.gif);
    +  background-repeat: no-repeat;
    +  background-position: 2px center;
    +}
    +
    +pre.source span.bfc:hover {
    +  background-color:#80ff80;
    +}
    +
    +pre.source span.bnc {
    +  background-image: url(branchnc.gif);
    +  background-repeat: no-repeat;
    +  background-position: 2px center;
    +}
    +
    +pre.source span.bnc:hover {
    +  background-color:#ff8080;
    +}
    +
    +pre.source span.bpc {
    +  background-image: url(branchpc.gif);
    +  background-repeat: no-repeat;
    +  background-position: 2px center;
    +}
    +
    +pre.source span.bpc:hover {
    +  background-color:#ffff80;
    +}
    +
    +table.coverage {
    +  empty-cells:show;
    +  border-collapse:collapse;
    +}
    +
    +table.coverage thead {
    +  background-color:#e0e0e0;
    +}
    +
    +table.coverage thead td {
    +  white-space:nowrap;
    +  padding:2px 14px 0px 6px;
    +  border-bottom:#b0b0b0 1px solid;
    +}
    +
    +table.coverage thead td.bar {
    +  border-left:#cccccc 1px solid;
    +}
    +
    +table.coverage thead td.ctr1 {
    +  text-align:right;
    +  border-left:#cccccc 1px solid;
    +}
    +
    +table.coverage thead td.ctr2 {
    +  text-align:right;
    +  padding-left:2px;
    +}
    +
    +table.coverage thead td.sortable {
    +  cursor:pointer;
    +  background-image:url(sort.gif);
    +  background-position:right center;
    +  background-repeat:no-repeat;
    +}
    +
    +table.coverage thead td.up {
    +  background-image:url(up.gif);
    +}
    +
    +table.coverage thead td.down {
    +  background-image:url(down.gif);
    +}
    +
    +table.coverage tbody td {
    +  white-space:nowrap;
    +  padding:2px 6px 2px 6px;
    +  border-bottom:#d6d3ce 1px solid;
    +}
    +
    +table.coverage tbody tr:hover {
    +  background: #f0f0d0 !important;
    +}
    +
    +table.coverage tbody td.bar {
    +  border-left:#e8e8e8 1px solid;
    +}
    +
    +table.coverage tbody td.ctr1 {
    +  text-align:right;
    +  padding-right:14px;
    +  border-left:#e8e8e8 1px solid;
    +}
    +
    +table.coverage tbody td.ctr2 {
    +  text-align:right;
    +  padding-right:14px;
    +  padding-left:2px;
    +}
    +
    +table.coverage tfoot td {
    +  white-space:nowrap;
    +  padding:2px 6px 2px 6px;
    +}
    +
    +table.coverage tfoot td.bar {
    +  border-left:#e8e8e8 1px solid;
    +}
    +
    +table.coverage tfoot td.ctr1 {
    +  text-align:right;
    +  padding-right:14px;
    +  border-left:#e8e8e8 1px solid;
    +}
    +
    +table.coverage tfoot td.ctr2 {
    +  text-align:right;
    +  padding-right:14px;
    +  padding-left:2px;
    +}
    +
    +.footer {
    +  margin-top:20px;
    +  border-top:#d6d3ce 1px solid;
    +  padding-top:2px;
    +  font-size:8pt;
    +  color:#a0a0a0;
    +}
    +
    +.footer a {
    +  color:#a0a0a0;
    +}
    +
    +.right {
    +  float:right;
    +}
    diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/report.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/report.gif
    new file mode 100644
    index 0000000..8547be5
    Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/report.gif differ
    diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/session.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/session.gif
    new file mode 100644
    index 0000000..0151bad
    Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/session.gif differ
    diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/sort.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/sort.gif
    new file mode 100644
    index 0000000..6757c2c
    Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/sort.gif differ
    diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/sort.js b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/sort.js
    new file mode 100644
    index 0000000..9dcb0e8
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/sort.js
    @@ -0,0 +1,148 @@
    +/*******************************************************************************
    + * Copyright (c) 2009, 2024 Mountainminds GmbH & Co. KG and Contributors
    + * This program and the accompanying materials are made available under
    + * the terms of the Eclipse Public License 2.0 which is available at
    + * http://www.eclipse.org/legal/epl-2.0
    + *
    + * SPDX-License-Identifier: EPL-2.0
    + *
    + * Contributors:
    + *    Marc R. Hoffmann - initial API and implementation
    + *
    + *******************************************************************************/
    +
    +(function () {
    +
    +  /**
    +   * Sets the initial sorting derived from the hash.
    +   *
    +   * @param linkelementids
    +   *          list of element ids to search for links to add sort inidcator
    +   *          hash links
    +   */
    +  function initialSort(linkelementids) {
    +    window.linkelementids = linkelementids;
    +    var hash = window.location.hash;
    +    if (hash) {
    +      var m = hash.match(/up-./);
    +      if (m) {
    +        var header = window.document.getElementById(m[0].charAt(3));
    +        if (header) {
    +          sortColumn(header, true);
    +        }
    +        return;
    +      }
    +      var m = hash.match(/dn-./);
    +      if (m) {
    +        var header = window.document.getElementById(m[0].charAt(3));
    +        if (header) {
    +          sortColumn(header, false);
    +        }
    +        return
    +      }
    +    }
    +  }
    +
    +  /**
    +   * Sorts the columns with the given header dependening on the current sort state.
    +   */
    +  function toggleSort(header) {
    +    var sortup = header.className.indexOf('down ') == 0;
    +    sortColumn(header, sortup);
    +  }
    +
    +  /**
    +   * Sorts the columns with the given header in the given direction.
    +   */
    +  function sortColumn(header, sortup) {
    +    var table = header.parentNode.parentNode.parentNode;
    +    var body = table.tBodies[0];
    +    var colidx = getNodePosition(header);
    +
    +    resetSortedStyle(table);
    +
    +    var rows = body.rows;
    +    var sortedrows = [];
    +    for (var i = 0; i < rows.length; i++) {
    +      r = rows[i];
    +      sortedrows[parseInt(r.childNodes[colidx].id.slice(1))] = r;
    +    }
    +
    +    var hash;
    +
    +    if (sortup) {
    +      for (var i = sortedrows.length - 1; i >= 0; i--) {
    +        body.appendChild(sortedrows[i]);
    +      }
    +      header.className = 'up ' + header.className;
    +      hash = 'up-' + header.id;
    +    } else {
    +      for (var i = 0; i < sortedrows.length; i++) {
    +        body.appendChild(sortedrows[i]);
    +      }
    +      header.className = 'down ' + header.className;
    +      hash = 'dn-' + header.id;
    +    }
    +
    +    setHash(hash);
    +  }
    +
    +  /**
    +   * Adds the sort indicator as a hash to the document URL and all links.
    +   */
    +  function setHash(hash) {
    +    window.document.location.hash = hash;
    +    ids = window.linkelementids;
    +    for (var i = 0; i < ids.length; i++) {
    +        setHashOnAllLinks(document.getElementById(ids[i]), hash);
    +    }
    +  }
    +
    +  /**
    +   * Extend all links within the given tag with the given hash.
    +   */
    +  function setHashOnAllLinks(tag, hash) {
    +    links = tag.getElementsByTagName("a");
    +    for (var i = 0; i < links.length; i++) {
    +        var a = links[i];
    +        var href = a.href;
    +        var hashpos = href.indexOf("#");
    +        if (hashpos != -1) {
    +            href = href.substring(0, hashpos);
    +        }
    +        a.href = href + "#" + hash;
    +    }
    +  }
    +
    +  /**
    +   * Calculates the position of a element within its parent.
    +   */
    +  function getNodePosition(element) {
    +    var pos = -1;
    +    while (element) {
    +      element = element.previousSibling;
    +      pos++;
    +    }
    +    return pos;
    +  }
    +
    +  /**
    +   * Remove the sorting indicator style from all headers.
    +   */
    +  function resetSortedStyle(table) {
    +    for (var c = table.tHead.firstChild.firstChild; c; c = c.nextSibling) {
    +      if (c.className) {
    +        if (c.className.indexOf('down ') == 0) {
    +          c.className = c.className.slice(5);
    +        }
    +        if (c.className.indexOf('up ') == 0) {
    +          c.className = c.className.slice(3);
    +        }
    +      }
    +    }
    +  }
    +
    +  window['initialSort'] = initialSort;
    +  window['toggleSort'] = toggleSort;
    +
    +})();
    diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/source.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/source.gif
    new file mode 100644
    index 0000000..b226e41
    Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/source.gif differ
    diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-resources/up.gif b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/up.gif
    new file mode 100644
    index 0000000..58ed216
    Binary files /dev/null and b/demo-project/specs/aggregated-reports/coverage/jacoco-resources/up.gif differ
    diff --git a/demo-project/specs/aggregated-reports/coverage/jacoco-sessions.html b/demo-project/specs/aggregated-reports/coverage/jacoco-sessions.html
    new file mode 100644
    index 0000000..fb631b0
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/coverage/jacoco-sessions.html
    @@ -0,0 +1 @@
    +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="jacoco-resources/report.gif" type="image/gif"/><title>Sessions</title></head><body><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><a href="index.html" class="el_report">demo-project</a> &gt; <span class="el_session">Sessions</span></div><h1>Sessions</h1><p>This coverage report is based on execution data from the following sessions:</p><table class="coverage" cellspacing="0"><thead><tr><td>Session</td><td>Start Time</td><td>Dump Time</td></tr></thead><tbody><tr><td><span class="el_session">gmazzola-mac-6.local-fba12aa7</span></td><td>Nov 25, 2024, 4:46:46 PM</td><td>Nov 25, 2024, 4:46:47 PM</td></tr><tr><td><span class="el_session">gmazzola-mac-6.local-27d6bd8e</span></td><td>Nov 28, 2024, 11:29:31 AM</td><td>Nov 28, 2024, 11:29:32 AM</td></tr><tr><td><span class="el_session">gmazzola-mac-6.local-f6901432</span></td><td>Nov 28, 2024, 11:29:31 AM</td><td>Nov 28, 2024, 11:29:32 AM</td></tr><tr><td><span class="el_session">gmazzola-mac-6.local-68132984</span></td><td>Nov 28, 2024, 11:29:31 AM</td><td>Nov 28, 2024, 11:29:32 AM</td></tr><tr><td><span class="el_session">gmazzola-mac-6.local-bbb4f5e</span></td><td>Nov 28, 2024, 11:29:31 AM</td><td>Nov 28, 2024, 11:29:35 AM</td></tr><tr><td><span class="el_session">gmazzola-mac-6.local-6fbcd827</span></td><td>Nov 28, 2024, 11:29:31 AM</td><td>Nov 28, 2024, 11:29:35 AM</td></tr></tbody></table><p>Execution data for the following classes is considered in this report:</p><table class="coverage" cellspacing="0"><thead><tr><td>Class</td><td>Id</td></tr></thead><tbody><tr><td><span class="el_class">MyUseCaseTest</span></td><td><code>93127901f5f364dc</code></td></tr><tr><td><span class="el_class">android.accessibilityservice.AccessibilityServiceInfo</span></td><td><code>12bd369b3d1570a5</code></td></tr><tr><td><span class="el_class">android.accessibilityservice.AccessibilityServiceInfo.1</span></td><td><code>f8c3eb4ec3ca6725</code></td></tr><tr><td><span class="el_class">android.accessibilityservice.AccessibilityServiceInfo.CapabilityInfo</span></td><td><code>1dc3d265bcd0bd4d</code></td></tr><tr><td><span class="el_class">android.animation.Animator</span></td><td><code>fa6ad6c09e9d6e45</code></td></tr><tr><td><span class="el_class">android.animation.AnimatorInflater</span></td><td><code>9a44a5b74e8e13dc</code></td></tr><tr><td><span class="el_class">android.animation.AnimatorListenerAdapter</span></td><td><code>8317ac8f23fa952b</code></td></tr><tr><td><span class="el_class">android.animation.AnimatorSet</span></td><td><code>49b885f50be24bb8</code></td></tr><tr><td><span class="el_class">android.animation.AnimatorSet.AnimatorSetListener</span></td><td><code>2000f9f3c13a9460</code></td></tr><tr><td><span class="el_class">android.animation.AnimatorSet.Builder</span></td><td><code>930fadd5974439c3</code></td></tr><tr><td><span class="el_class">android.animation.AnimatorSet.Dependency</span></td><td><code>99912c792e069bbd</code></td></tr><tr><td><span class="el_class">android.animation.AnimatorSet.DependencyListener</span></td><td><code>39130ee4acfe1015</code></td></tr><tr><td><span class="el_class">android.animation.AnimatorSet.Node</span></td><td><code>ad29052f13ab4785</code></td></tr><tr><td><span class="el_class">android.animation.FloatEvaluator</span></td><td><code>8a1d264d77b81fcd</code></td></tr><tr><td><span class="el_class">android.animation.FloatKeyframeSet</span></td><td><code>d6a5a75fbfdeb955</code></td></tr><tr><td><span class="el_class">android.animation.IntEvaluator</span></td><td><code>90cbe03902263a6b</code></td></tr><tr><td><span class="el_class">android.animation.Keyframe</span></td><td><code>056d6f7f14332e95</code></td></tr><tr><td><span class="el_class">android.animation.Keyframe.FloatKeyframe</span></td><td><code>5319c148888e3dd8</code></td></tr><tr><td><span class="el_class">android.animation.KeyframeSet</span></td><td><code>87c9ee70ff989e37</code></td></tr><tr><td><span class="el_class">android.animation.ObjectAnimator</span></td><td><code>91f20b60201bbb06</code></td></tr><tr><td><span class="el_class">android.animation.PropertyValuesHolder</span></td><td><code>cf1c727fff72ad8b</code></td></tr><tr><td><span class="el_class">android.animation.PropertyValuesHolder.FloatPropertyValuesHolder</span></td><td><code>d4fb232bd56306d0</code></td></tr><tr><td><span class="el_class">android.animation.RectEvaluator</span></td><td><code>63a7a4161fb0634e</code></td></tr><tr><td><span class="el_class">android.animation.StateListAnimator</span></td><td><code>5fa0796ba0b8e70c</code></td></tr><tr><td><span class="el_class">android.animation.StateListAnimator.1</span></td><td><code>602c2508b018d1c7</code></td></tr><tr><td><span class="el_class">android.animation.StateListAnimator.Tuple</span></td><td><code>3ccdcd5215e907d3</code></td></tr><tr><td><span class="el_class">android.animation.ValueAnimator</span></td><td><code>a353dcdfd50fe976</code></td></tr><tr><td><span class="el_class">android.animation.ValueAnimator.AnimationHandler</span></td><td><code>25d75f62b45ccd0a</code></td></tr><tr><td><span class="el_class">android.app.Activity</span></td><td><code>3674e4f4f99f1ca5</code></td></tr><tr><td><span class="el_class">android.app.Activity.1</span></td><td><code>9c2680f33ff9d1d3</code></td></tr><tr><td><span class="el_class">android.app.ActivityManager</span></td><td><code>f36bc767aafbe663</code></td></tr><tr><td><span class="el_class">android.app.ActivityManager.MemoryInfo</span></td><td><code>8cbaaa06ca0734f1</code></td></tr><tr><td><span class="el_class">android.app.ActivityManager.MemoryInfo.1</span></td><td><code>58ca497bbb190023</code></td></tr><tr><td><span class="el_class">android.app.ActivityManager.RunningAppProcessInfo</span></td><td><code>3b6a5dcbe255872d</code></td></tr><tr><td><span class="el_class">android.app.ActivityManager.RunningAppProcessInfo.1</span></td><td><code>1d517383fb14d2a9</code></td></tr><tr><td><span class="el_class">android.app.ActivityManager.TaskDescription</span></td><td><code>4695cca6337f5ce5</code></td></tr><tr><td><span class="el_class">android.app.ActivityManager.TaskDescription.1</span></td><td><code>7d84c743619a0192</code></td></tr><tr><td><span class="el_class">android.app.ActivityManagerNative</span></td><td><code>690e55f0d051e6b3</code></td></tr><tr><td><span class="el_class">android.app.ActivityManagerNative.1</span></td><td><code>304e840ce07191a1</code></td></tr><tr><td><span class="el_class">android.app.ActivityThread</span></td><td><code>e0ea5973e3cd6a3e</code></td></tr><tr><td><span class="el_class">android.app.ActivityThread.ActivityClientRecord</span></td><td><code>d89316992467ebec</code></td></tr><tr><td><span class="el_class">android.app.ActivityThread.AppBindData</span></td><td><code>4d666d17d95a61c5</code></td></tr><tr><td><span class="el_class">android.app.ActivityThread.ApplicationThread</span></td><td><code>f98e0d1bf18f6d40</code></td></tr><tr><td><span class="el_class">android.app.ActivityThread.GcIdler</span></td><td><code>81e22df49c79e9b2</code></td></tr><tr><td><span class="el_class">android.app.ActivityThread.H</span></td><td><code>757955e053dc07a4</code></td></tr><tr><td><span class="el_class">android.app.ActivityTransitionState</span></td><td><code>2fbf3f31bc59c4e2</code></td></tr><tr><td><span class="el_class">android.app.Application</span></td><td><code>825dc5e4e1625800</code></td></tr><tr><td><span class="el_class">android.app.ApplicationPackageManager</span></td><td><code>4fa3ee91669244a9</code></td></tr><tr><td><span class="el_class">android.app.ApplicationPackageManager.ResourceName</span></td><td><code>986999b3d1d7e366</code></td></tr><tr><td><span class="el_class">android.app.ApplicationThreadNative</span></td><td><code>7f2759a7c33b3723</code></td></tr><tr><td><span class="el_class">android.app.BackStackRecord</span></td><td><code>d919255831bda2a0</code></td></tr><tr><td><span class="el_class">android.app.BackStackRecord.Op</span></td><td><code>80f0cf09f32b2595</code></td></tr><tr><td><span class="el_class">android.app.BackStackRecord.TransitionState</span></td><td><code>b014dbff58be572f</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl</span></td><td><code>d8b8f574b13ca1a0</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.1</span></td><td><code>78b44f5e4527fe64</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.10</span></td><td><code>63eda1b2c17687a2</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.11</span></td><td><code>c57d691ee4f0daf8</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.12</span></td><td><code>2c1f384cab1782ae</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.13</span></td><td><code>7f3aa121a16cb1b0</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.14</span></td><td><code>d810c007c55a8d30</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.15</span></td><td><code>19a606fcba4fc82a</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.16</span></td><td><code>9f171e720f02c45b</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.17</span></td><td><code>7c728837333ff691</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.18</span></td><td><code>fa90a3665f0dc3a7</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.19</span></td><td><code>30b09caa8aea47d0</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.2</span></td><td><code>3f7326e4692f09f1</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.20</span></td><td><code>8579b61d6ff99176</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.21</span></td><td><code>0c848d768956a2d4</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.22</span></td><td><code>edb6e4b03f7de95c</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.23</span></td><td><code>a94db09c428a929d</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.24</span></td><td><code>a2e233a04b4280ad</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.25</span></td><td><code>4a1775e2f4342524</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.26</span></td><td><code>2cc1822902f30d9a</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.27</span></td><td><code>5fe3f5862b077567</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.28</span></td><td><code>ee68abcedb8ab5f0</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.29</span></td><td><code>0b9f8200e3f08b90</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.3</span></td><td><code>6031ad89b947c1e3</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.30</span></td><td><code>785696362ace6faa</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.31</span></td><td><code>8f35990ef75fd104</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.32</span></td><td><code>f91974d687619ad9</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.33</span></td><td><code>10664da03452b788</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.34</span></td><td><code>f96e916358d149f4</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.35</span></td><td><code>8704b7dad0844141</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.36</span></td><td><code>8abebb8419a471a3</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.37</span></td><td><code>ae67bda9704e4368</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.38</span></td><td><code>5a484248ed4c73b7</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.39</span></td><td><code>e4619f00cba0e502</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.4</span></td><td><code>d02b402fae2ac4ff</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.40</span></td><td><code>6b3d5c51aa120a17</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.41</span></td><td><code>6363344aadac0397</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.42</span></td><td><code>1cb947f62cee7b70</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.43</span></td><td><code>5658ef487a63e14e</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.44</span></td><td><code>fe9317de01420e5b</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.45</span></td><td><code>9eaa2aa27089422d</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.46</span></td><td><code>15d5db135cbd16b0</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.47</span></td><td><code>0f3b2ffd8aa7f497</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.48</span></td><td><code>16d5972886e10fd6</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.49</span></td><td><code>fecfaecfdc77fa52</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.5</span></td><td><code>9be23ff6b25d9055</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.50</span></td><td><code>8c6be70b6658f610</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.51</span></td><td><code>57157b6e44f04289</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.52</span></td><td><code>41a887fda317cb2c</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.53</span></td><td><code>c4aef44de4fdf234</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.54</span></td><td><code>8e24a31a0786e507</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.55</span></td><td><code>8ad04f8c534ecd06</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.56</span></td><td><code>49e95e7b1f189665</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.57</span></td><td><code>d278d8e1f5717e64</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.58</span></td><td><code>04c10c92707e1acc</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.59</span></td><td><code>32d41b1d8473e361</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.6</span></td><td><code>620fd18078b33917</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.60</span></td><td><code>28671bee6f3af719</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.61</span></td><td><code>9836e228fe1682e9</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.62</span></td><td><code>5a763e459a7cecb0</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.7</span></td><td><code>6308f4a2c051b4a0</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.8</span></td><td><code>18a4dada7db55ee0</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.9</span></td><td><code>735d94c7a36fa91a</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.ApplicationContentResolver</span></td><td><code>51e3a549b63aa60a</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.ServiceFetcher</span></td><td><code>2febd462dfcf1049</code></td></tr><tr><td><span class="el_class">android.app.ContextImpl.StaticServiceFetcher</span></td><td><code>d6a0d712361e1f15</code></td></tr><tr><td><span class="el_class">android.app.Fragment</span></td><td><code>657243f8a55a0d8e</code></td></tr><tr><td><span class="el_class">android.app.Fragment.1</span></td><td><code>0a37891d74958f2a</code></td></tr><tr><td><span class="el_class">android.app.FragmentManager</span></td><td><code>1248be0d01252f54</code></td></tr><tr><td><span class="el_class">android.app.FragmentManagerImpl</span></td><td><code>f01dc042c48a9832</code></td></tr><tr><td><span class="el_class">android.app.FragmentManagerImpl.1</span></td><td><code>dbddc8f29bf8113f</code></td></tr><tr><td><span class="el_class">android.app.FragmentTransaction</span></td><td><code>864189e6b4989677</code></td></tr><tr><td><span class="el_class">android.app.Instrumentation</span></td><td><code>472c6e79a27b5f4c</code></td></tr><tr><td><span class="el_class">android.app.LoadedApk</span></td><td><code>d90db42c2fd853a3</code></td></tr><tr><td><span class="el_class">android.app.Notification</span></td><td><code>56f7231acedc659f</code></td></tr><tr><td><span class="el_class">android.app.Notification.1</span></td><td><code>6b8bb988f95b3468</code></td></tr><tr><td><span class="el_class">android.app.ProfilerInfo</span></td><td><code>9d1407514db6b5e2</code></td></tr><tr><td><span class="el_class">android.app.ProfilerInfo.1</span></td><td><code>722240df1b4f20ed</code></td></tr><tr><td><span class="el_class">android.app.QueuedWork</span></td><td><code>555c6706f96f543b</code></td></tr><tr><td><span class="el_class">android.app.ResourcesManager</span></td><td><code>0d9bf799c8876a4d</code></td></tr><tr><td><span class="el_class">android.app.SharedElementCallback</span></td><td><code>c69a03fa231e9ff1</code></td></tr><tr><td><span class="el_class">android.app.SharedElementCallback.1</span></td><td><code>06c5404c07b7b331</code></td></tr><tr><td><span class="el_class">android.content.BroadcastReceiver</span></td><td><code>0084e84d84e25b4f</code></td></tr><tr><td><span class="el_class">android.content.ClipData</span></td><td><code>db19faaa1fe73339</code></td></tr><tr><td><span class="el_class">android.content.ClipData.1</span></td><td><code>71b557a09970cb6a</code></td></tr><tr><td><span class="el_class">android.content.ComponentName</span></td><td><code>33199c84aa0c0596</code></td></tr><tr><td><span class="el_class">android.content.ComponentName.1</span></td><td><code>4c63d048b63a0fb7</code></td></tr><tr><td><span class="el_class">android.content.ContentResolver</span></td><td><code>cfe4e37e6125d5ea</code></td></tr><tr><td><span class="el_class">android.content.Context</span></td><td><code>200a32f6b032b438</code></td></tr><tr><td><span class="el_class">android.content.ContextWrapper</span></td><td><code>1bc9de4539f25094</code></td></tr><tr><td><span class="el_class">android.content.Intent</span></td><td><code>3cfefdb78b9b3fdb</code></td></tr><tr><td><span class="el_class">android.content.Intent.1</span></td><td><code>054d772da93f6cfb</code></td></tr><tr><td><span class="el_class">android.content.IntentFilter</span></td><td><code>2dfddeeef870b7d3</code></td></tr><tr><td><span class="el_class">android.content.IntentFilter.1</span></td><td><code>b531717928a42dc3</code></td></tr><tr><td><span class="el_class">android.content.IntentSender</span></td><td><code>04d9a70575d44c4e</code></td></tr><tr><td><span class="el_class">android.content.IntentSender.1</span></td><td><code>933a292909aa9786</code></td></tr><tr><td><span class="el_class">android.content.pm.ActivityInfo</span></td><td><code>d8311425882d71c4</code></td></tr><tr><td><span class="el_class">android.content.pm.ActivityInfo.1</span></td><td><code>8c306f89355b4af9</code></td></tr><tr><td><span class="el_class">android.content.pm.ApplicationInfo</span></td><td><code>387cead625245acc</code></td></tr><tr><td><span class="el_class">android.content.pm.ApplicationInfo.1</span></td><td><code>688f7c45b41d4328</code></td></tr><tr><td><span class="el_class">android.content.pm.ComponentInfo</span></td><td><code>190f9d926b6968c2</code></td></tr><tr><td><span class="el_class">android.content.pm.KeySet</span></td><td><code>a217ebc937bdfc0c</code></td></tr><tr><td><span class="el_class">android.content.pm.KeySet.1</span></td><td><code>7f8ad530f96563ff</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageCleanItem</span></td><td><code>cf04d3862594f0b9</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageCleanItem.1</span></td><td><code>d3a7ac83619065da</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageInfo</span></td><td><code>1d2491778a3d75bd</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageInfo.1</span></td><td><code>857e46ba9286c34f</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageItemInfo</span></td><td><code>095dea38c7dd62af</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageManager</span></td><td><code>c8a42876b933bf52</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageManager.NameNotFoundException</span></td><td><code>8d696190541002df</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser</span></td><td><code>e4e095d96655570f</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser.Activity</span></td><td><code>9a6cd4b53c05e105</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser.ActivityIntentInfo</span></td><td><code>66de0d81e04bc076</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser.Component</span></td><td><code>3d8b25b8885b17d4</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser.IntentInfo</span></td><td><code>4aaac6f10048ee59</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser.NewPermissionInfo</span></td><td><code>861c22f07b511e8c</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser.Package</span></td><td><code>3a093ac1ffcda763</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser.ParseComponentArgs</span></td><td><code>f3bf8019adafcd2a</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser.ParsePackageItemArgs</span></td><td><code>816ae1284fc15b4a</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser.Permission</span></td><td><code>0cbab5d902e802b7</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser.Provider</span></td><td><code>3f6a01daba32b0da</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser.SplitNameComparator</span></td><td><code>d360356150301924</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageParser.SplitPermissionInfo</span></td><td><code>f2b3214ebf98d9c0</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageStats</span></td><td><code>b90801447dc90691</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageStats.1</span></td><td><code>3ce4c39639697c7e</code></td></tr><tr><td><span class="el_class">android.content.pm.PackageUserState</span></td><td><code>a29b4d2477288ff2</code></td></tr><tr><td><span class="el_class">android.content.pm.PermissionGroupInfo</span></td><td><code>5923db637df42f42</code></td></tr><tr><td><span class="el_class">android.content.pm.PermissionGroupInfo.1</span></td><td><code>c63f60a4c7f96c71</code></td></tr><tr><td><span class="el_class">android.content.pm.PermissionInfo</span></td><td><code>1a96ceba8779656b</code></td></tr><tr><td><span class="el_class">android.content.pm.PermissionInfo.1</span></td><td><code>6f006a7addd995ee</code></td></tr><tr><td><span class="el_class">android.content.pm.ProviderInfo</span></td><td><code>579bb151731e8428</code></td></tr><tr><td><span class="el_class">android.content.pm.ProviderInfo.1</span></td><td><code>be5215cd1e03976e</code></td></tr><tr><td><span class="el_class">android.content.pm.UserInfo</span></td><td><code>ace3e0a15c428a9f</code></td></tr><tr><td><span class="el_class">android.content.pm.UserInfo.1</span></td><td><code>7cb771b656949152</code></td></tr><tr><td><span class="el_class">android.content.pm.VerificationParams</span></td><td><code>89b9abb9286bcf0b</code></td></tr><tr><td><span class="el_class">android.content.pm.VerificationParams.1</span></td><td><code>9b8480071e8988b5</code></td></tr><tr><td><span class="el_class">android.content.res.AssetManager</span></td><td><code>27dd7a6153525e9e</code></td></tr><tr><td><span class="el_class">android.content.res.AssetManager.AssetInputStream</span></td><td><code>02154c03e645471f</code></td></tr><tr><td><span class="el_class">android.content.res.ColorStateList</span></td><td><code>08d1a48da283b839</code></td></tr><tr><td><span class="el_class">android.content.res.ColorStateList.1</span></td><td><code>96406b5fe5a9f5c2</code></td></tr><tr><td><span class="el_class">android.content.res.CompatibilityInfo</span></td><td><code>7dc146329569d242</code></td></tr><tr><td><span class="el_class">android.content.res.CompatibilityInfo.1</span></td><td><code>69f61a0cb139a471</code></td></tr><tr><td><span class="el_class">android.content.res.CompatibilityInfo.2</span></td><td><code>9c54da239327f283</code></td></tr><tr><td><span class="el_class">android.content.res.Configuration</span></td><td><code>10dbaeb185ed35f7</code></td></tr><tr><td><span class="el_class">android.content.res.Configuration.1</span></td><td><code>5e353b495ac526f6</code></td></tr><tr><td><span class="el_class">android.content.res.Resources</span></td><td><code>e1541985618831f3</code></td></tr><tr><td><span class="el_class">android.content.res.Resources.Theme</span></td><td><code>f09350eab62d78d2</code></td></tr><tr><td><span class="el_class">android.content.res.ResourcesKey</span></td><td><code>f8498a016a6c0acd</code></td></tr><tr><td><span class="el_class">android.content.res.StringBlock</span></td><td><code>a6ead86f1454226f</code></td></tr><tr><td><span class="el_class">android.content.res.TypedArray</span></td><td><code>7e9bf2f53eafe7c4</code></td></tr><tr><td><span class="el_class">android.content.res.XmlBlock</span></td><td><code>003c504eb2723371</code></td></tr><tr><td><span class="el_class">android.content.res.XmlBlock.Parser</span></td><td><code>a225ae60638dd844</code></td></tr><tr><td><span class="el_class">android.emoji.EmojiFactory</span></td><td><code>9d37802019e84744</code></td></tr><tr><td><span class="el_class">android.graphics.Bitmap</span></td><td><code>9665fdeece3d7b6d</code></td></tr><tr><td><span class="el_class">android.graphics.Bitmap.1</span></td><td><code>ce67ac074ea927db</code></td></tr><tr><td><span class="el_class">android.graphics.Bitmap.Config</span></td><td><code>817a6d01caa23e6b</code></td></tr><tr><td><span class="el_class">android.graphics.BitmapFactory</span></td><td><code>75bba11237187b83</code></td></tr><tr><td><span class="el_class">android.graphics.BitmapFactory.Options</span></td><td><code>cc69ca4d8d74ab17</code></td></tr><tr><td><span class="el_class">android.graphics.Canvas</span></td><td><code>a1ceda92a9cb1f7f</code></td></tr><tr><td><span class="el_class">android.graphics.Canvas.CanvasFinalizer</span></td><td><code>a879afb9fc3e059a</code></td></tr><tr><td><span class="el_class">android.graphics.Color</span></td><td><code>714b181813552ff3</code></td></tr><tr><td><span class="el_class">android.graphics.ColorFilter</span></td><td><code>81bea7a55830b24f</code></td></tr><tr><td><span class="el_class">android.graphics.Insets</span></td><td><code>ba6b8655ff64842a</code></td></tr><tr><td><span class="el_class">android.graphics.Matrix</span></td><td><code>16e8746b4271cd3d</code></td></tr><tr><td><span class="el_class">android.graphics.Matrix.1</span></td><td><code>c8b40117810e1dc4</code></td></tr><tr><td><span class="el_class">android.graphics.Matrix.ScaleToFit</span></td><td><code>12291c7abd982444</code></td></tr><tr><td><span class="el_class">android.graphics.Outline</span></td><td><code>4b983c3d8c01f1a3</code></td></tr><tr><td><span class="el_class">android.graphics.Paint</span></td><td><code>b81d1fa20a829f9b</code></td></tr><tr><td><span class="el_class">android.graphics.Paint.Align</span></td><td><code>837332dd4b0390c7</code></td></tr><tr><td><span class="el_class">android.graphics.Paint.Cap</span></td><td><code>47ffb189697e76be</code></td></tr><tr><td><span class="el_class">android.graphics.Paint.FontMetricsInt</span></td><td><code>bb253c6cb3fa2845</code></td></tr><tr><td><span class="el_class">android.graphics.Paint.Join</span></td><td><code>0a216176b063fd57</code></td></tr><tr><td><span class="el_class">android.graphics.Paint.Style</span></td><td><code>710ae1041583e5fd</code></td></tr><tr><td><span class="el_class">android.graphics.Path</span></td><td><code>4942997c03fdd14e</code></td></tr><tr><td><span class="el_class">android.graphics.Path.FillType</span></td><td><code>53b85f9e916b0697</code></td></tr><tr><td><span class="el_class">android.graphics.Point</span></td><td><code>bd675ed56cad0e6b</code></td></tr><tr><td><span class="el_class">android.graphics.Point.1</span></td><td><code>c2f6098b4aab329c</code></td></tr><tr><td><span class="el_class">android.graphics.PointF</span></td><td><code>e3c3efc46ae715d5</code></td></tr><tr><td><span class="el_class">android.graphics.PointF.1</span></td><td><code>f25019257f008b37</code></td></tr><tr><td><span class="el_class">android.graphics.PorterDuff.Mode</span></td><td><code>4c985cbec669a07f</code></td></tr><tr><td><span class="el_class">android.graphics.PorterDuffColorFilter</span></td><td><code>5515297583ddf8b2</code></td></tr><tr><td><span class="el_class">android.graphics.PorterDuffXfermode</span></td><td><code>26ec6d082743e3f3</code></td></tr><tr><td><span class="el_class">android.graphics.Rect</span></td><td><code>3fd298a773b717e2</code></td></tr><tr><td><span class="el_class">android.graphics.Rect.1</span></td><td><code>e495e993b1c2cf27</code></td></tr><tr><td><span class="el_class">android.graphics.RectF</span></td><td><code>b24397cf1d3ad76b</code></td></tr><tr><td><span class="el_class">android.graphics.RectF.1</span></td><td><code>5aa235501ff5ff00</code></td></tr><tr><td><span class="el_class">android.graphics.Region</span></td><td><code>cd60feca7c15c80d</code></td></tr><tr><td><span class="el_class">android.graphics.Region.1</span></td><td><code>b0707682f7083742</code></td></tr><tr><td><span class="el_class">android.graphics.Typeface</span></td><td><code>c6477e51ae5b4f7f</code></td></tr><tr><td><span class="el_class">android.graphics.Xfermode</span></td><td><code>092ae3ca806e919c</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.BitmapDrawable</span></td><td><code>0d2caaf074306f0e</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.BitmapDrawable.BitmapState</span></td><td><code>ffd97732cd57cd35</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.ColorDrawable</span></td><td><code>bda7b2603fd1850e</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.ColorDrawable.ColorState</span></td><td><code>5c4a6502530efcfe</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.Drawable</span></td><td><code>89cebf16f077bc12</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.Drawable.ConstantState</span></td><td><code>16a86f026b643ad9</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.InsetDrawable</span></td><td><code>569d20957220440b</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.InsetDrawable.InsetState</span></td><td><code>a0b764f57412ed9e</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.LayerDrawable</span></td><td><code>47a69691099f7372</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.LayerDrawable.ChildDrawable</span></td><td><code>f177d3f64534f23f</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.LayerDrawable.LayerState</span></td><td><code>a2d82dbe3fda8355</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.RippleBackground</span></td><td><code>ed28e27a2a0b362b</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.RippleBackground.1</span></td><td><code>148fc97420c09d36</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.RippleBackground.2</span></td><td><code>fb26aaa07b78e3c7</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.RippleDrawable</span></td><td><code>f61862ada929fb4e</code></td></tr><tr><td><span class="el_class">android.graphics.drawable.RippleDrawable.RippleState</span></td><td><code>8dbd9fb9e1ba3e98</code></td></tr><tr><td><span class="el_class">android.hardware.display.DisplayManager</span></td><td><code>6f4298942e975135</code></td></tr><tr><td><span class="el_class">android.hardware.display.DisplayManagerGlobal</span></td><td><code>cb9dce8f6beb4b0d</code></td></tr><tr><td><span class="el_class">android.hardware.display.DisplayManagerGlobal.DisplayListenerDelegate</span></td><td><code>d80db5fe88dd8464</code></td></tr><tr><td><span class="el_class">android.hardware.display.DisplayManagerGlobal.DisplayManagerCallback</span></td><td><code>d08cddf630f54213</code></td></tr><tr><td><span class="el_class">android.hardware.display.IDisplayManagerCallback.Stub</span></td><td><code>c355bdff3306ec06</code></td></tr><tr><td><span class="el_class">android.media.AudioAttributes</span></td><td><code>8b29ddbf97ba580d</code></td></tr><tr><td><span class="el_class">android.media.AudioAttributes.1</span></td><td><code>47d08c25e9da2e5e</code></td></tr><tr><td><span class="el_class">android.media.AudioAttributes.Builder</span></td><td><code>d6739e2ef0c05919</code></td></tr><tr><td><span class="el_class">android.media.MediaCodecList</span></td><td><code>c8390aa79c56c72a</code></td></tr><tr><td><span class="el_class">android.media.MediaRouter</span></td><td><code>a77ae88c5171be5b</code></td></tr><tr><td><span class="el_class">android.net.Network</span></td><td><code>2f5d3381921d941b</code></td></tr><tr><td><span class="el_class">android.net.Network.2</span></td><td><code>8ff1bb83d04b5d56</code></td></tr><tr><td><span class="el_class">android.net.NetworkCapabilities</span></td><td><code>9455939039f18be7</code></td></tr><tr><td><span class="el_class">android.net.NetworkCapabilities.1</span></td><td><code>79256e789e7885ab</code></td></tr><tr><td><span class="el_class">android.net.NetworkInfo</span></td><td><code>64250206d564b038</code></td></tr><tr><td><span class="el_class">android.net.NetworkInfo.DetailedState</span></td><td><code>f3067dc4c1e7bf88</code></td></tr><tr><td><span class="el_class">android.net.NetworkInfo.State</span></td><td><code>0e69cdbc5fbed295</code></td></tr><tr><td><span class="el_class">android.net.Uri</span></td><td><code>8f9a3f0982f413b9</code></td></tr><tr><td><span class="el_class">android.net.Uri.1</span></td><td><code>bb8a9618edaeff96</code></td></tr><tr><td><span class="el_class">android.net.Uri.AbstractHierarchicalUri</span></td><td><code>be071d9c19653cca</code></td></tr><tr><td><span class="el_class">android.net.Uri.AbstractPart</span></td><td><code>2dd9725bc40bb26b</code></td></tr><tr><td><span class="el_class">android.net.Uri.HierarchicalUri</span></td><td><code>373966d3440b104b</code></td></tr><tr><td><span class="el_class">android.net.Uri.Part</span></td><td><code>c1dff40ad36b9239</code></td></tr><tr><td><span class="el_class">android.net.Uri.Part.EmptyPart</span></td><td><code>4016707749f48cb4</code></td></tr><tr><td><span class="el_class">android.net.Uri.PathPart</span></td><td><code>e9106f187ffb6abb</code></td></tr><tr><td><span class="el_class">android.nfc.NfcAdapter</span></td><td><code>4737417cbfa2c27b</code></td></tr><tr><td><span class="el_class">android.nfc.cardemulation.CardEmulation</span></td><td><code>3a99112e16884462</code></td></tr><tr><td><span class="el_class">android.os.BaseBundle</span></td><td><code>006677e54e65dcc0</code></td></tr><tr><td><span class="el_class">android.os.Binder</span></td><td><code>9950dba1d04e8150</code></td></tr><tr><td><span class="el_class">android.os.Build</span></td><td><code>226636a1fc441952</code></td></tr><tr><td><span class="el_class">android.os.Build.VERSION</span></td><td><code>96598181c64eaf16</code></td></tr><tr><td><span class="el_class">android.os.Build.VERSION</span></td><td><code>f04c3d577bc13851</code></td></tr><tr><td><span class="el_class">android.os.Bundle</span></td><td><code>9ad752df63881415</code></td></tr><tr><td><span class="el_class">android.os.Bundle.1</span></td><td><code>9c060b94c3d8b69f</code></td></tr><tr><td><span class="el_class">android.os.Handler</span></td><td><code>6a23195f84c3ec88</code></td></tr><tr><td><span class="el_class">android.os.Looper</span></td><td><code>f2301bd912312145</code></td></tr><tr><td><span class="el_class">android.os.Message</span></td><td><code>3e2a972e94e8bcb3</code></td></tr><tr><td><span class="el_class">android.os.Message.1</span></td><td><code>f8882c0faad86805</code></td></tr><tr><td><span class="el_class">android.os.MessageQueue</span></td><td><code>c136d8ad00cbbe20</code></td></tr><tr><td><span class="el_class">android.os.Parcel</span></td><td><code>48e9719ff057cfb6</code></td></tr><tr><td><span class="el_class">android.os.Parcel.1</span></td><td><code>1f5a66d57d12d25d</code></td></tr><tr><td><span class="el_class">android.os.ParcelFileDescriptor</span></td><td><code>6287cb4342ace1ae</code></td></tr><tr><td><span class="el_class">android.os.ParcelFileDescriptor.1</span></td><td><code>e8f4b608121d54a1</code></td></tr><tr><td><span class="el_class">android.os.PersistableBundle</span></td><td><code>a40ba7627ec7e006</code></td></tr><tr><td><span class="el_class">android.os.PersistableBundle.1</span></td><td><code>a096c6942adef0cf</code></td></tr><tr><td><span class="el_class">android.os.Process</span></td><td><code>511fc935ae9e5afc</code></td></tr><tr><td><span class="el_class">android.os.ResultReceiver</span></td><td><code>134e8d216a9b4552</code></td></tr><tr><td><span class="el_class">android.os.ResultReceiver.1</span></td><td><code>2d1e26be83bdf1d5</code></td></tr><tr><td><span class="el_class">android.os.ServiceManager</span></td><td><code>40b25d63d42cf069</code></td></tr><tr><td><span class="el_class">android.os.SystemClock</span></td><td><code>1674816828c58b5c</code></td></tr><tr><td><span class="el_class">android.os.SystemProperties</span></td><td><code>7cdb7e4287a5c151</code></td></tr><tr><td><span class="el_class">android.os.Trace</span></td><td><code>a2cb91f854e08dfe</code></td></tr><tr><td><span class="el_class">android.os.Trace.1</span></td><td><code>98e7fa12a5ad232a</code></td></tr><tr><td><span class="el_class">android.os.UserHandle</span></td><td><code>eb183074397d4eaf</code></td></tr><tr><td><span class="el_class">android.os.UserHandle.1</span></td><td><code>e631d55badf02ece</code></td></tr><tr><td><span class="el_class">android.text.BoringLayout</span></td><td><code>2147ef3e74126fb7</code></td></tr><tr><td><span class="el_class">android.text.BoringLayout.Metrics</span></td><td><code>359e0074799caa14</code></td></tr><tr><td><span class="el_class">android.text.Editable.Factory</span></td><td><code>a3f7dd6a478009f9</code></td></tr><tr><td><span class="el_class">android.text.Layout</span></td><td><code>5915a57ab8a82393</code></td></tr><tr><td><span class="el_class">android.text.Layout.Alignment</span></td><td><code>37b62e316f2e4322</code></td></tr><tr><td><span class="el_class">android.text.Layout.Directions</span></td><td><code>7da004c5706664ae</code></td></tr><tr><td><span class="el_class">android.text.Selection</span></td><td><code>11ba566553f41241</code></td></tr><tr><td><span class="el_class">android.text.Selection.END</span></td><td><code>b488c1e9d8762f5a</code></td></tr><tr><td><span class="el_class">android.text.Selection.START</span></td><td><code>e1e3e3b9262907bf</code></td></tr><tr><td><span class="el_class">android.text.SpanSet</span></td><td><code>1fd508c0f00161d7</code></td></tr><tr><td><span class="el_class">android.text.Spannable.Factory</span></td><td><code>b3f1cdb04b4aa861</code></td></tr><tr><td><span class="el_class">android.text.SpannableStringInternal</span></td><td><code>c32630aeddf1c9bc</code></td></tr><tr><td><span class="el_class">android.text.SpannedString</span></td><td><code>fb4c70348ebe6e68</code></td></tr><tr><td><span class="el_class">android.text.TextDirectionHeuristics</span></td><td><code>ddabe45826596562</code></td></tr><tr><td><span class="el_class">android.text.TextDirectionHeuristics.AnyStrong</span></td><td><code>14b2e4100578422b</code></td></tr><tr><td><span class="el_class">android.text.TextDirectionHeuristics.FirstStrong</span></td><td><code>134152f114889694</code></td></tr><tr><td><span class="el_class">android.text.TextDirectionHeuristics.TextDirectionHeuristicImpl</span></td><td><code>97a7763562530a06</code></td></tr><tr><td><span class="el_class">android.text.TextDirectionHeuristics.TextDirectionHeuristicInternal</span></td><td><code>2c450a9a181384f4</code></td></tr><tr><td><span class="el_class">android.text.TextDirectionHeuristics.TextDirectionHeuristicLocale</span></td><td><code>8b4ff6ce0ee83ee8</code></td></tr><tr><td><span class="el_class">android.text.TextLine</span></td><td><code>2892bb1251f31980</code></td></tr><tr><td><span class="el_class">android.text.TextPaint</span></td><td><code>e006b9432e44b6a0</code></td></tr><tr><td><span class="el_class">android.text.TextUtils</span></td><td><code>e84fb244e01076d9</code></td></tr><tr><td><span class="el_class">android.text.TextUtils.1</span></td><td><code>2f0fec12e05ac290</code></td></tr><tr><td><span class="el_class">android.text.TextUtils.TruncateAt</span></td><td><code>cfb2453ade98e4a2</code></td></tr><tr><td><span class="el_class">android.text.format.DateUtils</span></td><td><code>2a18708da50cf22f</code></td></tr><tr><td><span class="el_class">android.text.method.AllCapsTransformationMethod</span></td><td><code>80627dd1ea8109e0</code></td></tr><tr><td><span class="el_class">android.text.method.ReplacementTransformationMethod</span></td><td><code>1f070eb99a1cbbd0</code></td></tr><tr><td><span class="el_class">android.text.method.SingleLineTransformationMethod</span></td><td><code>a78048fcd3170110</code></td></tr><tr><td><span class="el_class">android.text.style.SuggestionSpan</span></td><td><code>18029169de44de1f</code></td></tr><tr><td><span class="el_class">android.text.style.SuggestionSpan.1</span></td><td><code>f1f156f2dc19baa7</code></td></tr><tr><td><span class="el_class">android.transition.AutoTransition</span></td><td><code>3c222cc6e7840bb9</code></td></tr><tr><td><span class="el_class">android.transition.ChangeBounds</span></td><td><code>81ac3a00a249d802</code></td></tr><tr><td><span class="el_class">android.transition.ChangeBounds.1</span></td><td><code>d32d23002453ca3c</code></td></tr><tr><td><span class="el_class">android.transition.ChangeClipBounds</span></td><td><code>2d19e87b2e616dcc</code></td></tr><tr><td><span class="el_class">android.transition.ChangeImageTransform</span></td><td><code>40cf6ecb2665ab8e</code></td></tr><tr><td><span class="el_class">android.transition.ChangeImageTransform.1</span></td><td><code>4ab2200132e28a72</code></td></tr><tr><td><span class="el_class">android.transition.ChangeImageTransform.2</span></td><td><code>c4df151b065bc488</code></td></tr><tr><td><span class="el_class">android.transition.ChangeTransform</span></td><td><code>e59ec57c8d5bf98d</code></td></tr><tr><td><span class="el_class">android.transition.ChangeTransform.1</span></td><td><code>85d4ecfd93dc6a15</code></td></tr><tr><td><span class="el_class">android.transition.Fade</span></td><td><code>97aa40191b485619</code></td></tr><tr><td><span class="el_class">android.transition.PathMotion</span></td><td><code>a70a64f95042d392</code></td></tr><tr><td><span class="el_class">android.transition.Transition</span></td><td><code>ab80246d5c625b64</code></td></tr><tr><td><span class="el_class">android.transition.Transition.1</span></td><td><code>d3c3a31497e0385f</code></td></tr><tr><td><span class="el_class">android.transition.TransitionInflater</span></td><td><code>31f51e44755bda97</code></td></tr><tr><td><span class="el_class">android.transition.TransitionManager</span></td><td><code>616cb6359fa1f791</code></td></tr><tr><td><span class="el_class">android.transition.TransitionSet</span></td><td><code>af37115a7aa4890b</code></td></tr><tr><td><span class="el_class">android.transition.TransitionValuesMaps</span></td><td><code>ffd5aaad5fe108a7</code></td></tr><tr><td><span class="el_class">android.transition.Visibility</span></td><td><code>560f4e278bef7779</code></td></tr><tr><td><span class="el_class">android.util.AndroidException</span></td><td><code>e6345bfe275f893b</code></td></tr><tr><td><span class="el_class">android.util.AndroidRuntimeException</span></td><td><code>ca087adad19024ee</code></td></tr><tr><td><span class="el_class">android.util.ArrayMap</span></td><td><code>7ae8927dc3528ade</code></td></tr><tr><td><span class="el_class">android.util.ArraySet</span></td><td><code>2eb3839666711bce</code></td></tr><tr><td><span class="el_class">android.util.ContainerHelpers</span></td><td><code>f2bbf59a5b2185fc</code></td></tr><tr><td><span class="el_class">android.util.DisplayMetrics</span></td><td><code>d51b8a25f058e472</code></td></tr><tr><td><span class="el_class">android.util.FloatMath</span></td><td><code>b588d74cb4b6ad9a</code></td></tr><tr><td><span class="el_class">android.util.FloatProperty</span></td><td><code>f89f265168ab08ab</code></td></tr><tr><td><span class="el_class">android.util.Log</span></td><td><code>9292964c1df88df8</code></td></tr><tr><td><span class="el_class">android.util.Log.1</span></td><td><code>36d3979704d0c6ce</code></td></tr><tr><td><span class="el_class">android.util.LongSparseArray</span></td><td><code>e3b9c875c4277271</code></td></tr><tr><td><span class="el_class">android.util.LongSparseLongArray</span></td><td><code>988d3f582bae4356</code></td></tr><tr><td><span class="el_class">android.util.MathUtils</span></td><td><code>1478fa5c67b74da2</code></td></tr><tr><td><span class="el_class">android.util.Pair</span></td><td><code>457cf8569ec05e91</code></td></tr><tr><td><span class="el_class">android.util.Pools.SimplePool</span></td><td><code>80d813772476e627</code></td></tr><tr><td><span class="el_class">android.util.Pools.SynchronizedPool</span></td><td><code>ed9e486f0f4bd73a</code></td></tr><tr><td><span class="el_class">android.util.Property</span></td><td><code>bed8d4242760d92e</code></td></tr><tr><td><span class="el_class">android.util.Singleton</span></td><td><code>fdd08afcb23ba84b</code></td></tr><tr><td><span class="el_class">android.util.SparseArray</span></td><td><code>2b8e18508af29afb</code></td></tr><tr><td><span class="el_class">android.util.SparseBooleanArray</span></td><td><code>7d6839ce0451b93a</code></td></tr><tr><td><span class="el_class">android.util.SparseIntArray</span></td><td><code>1ccf6221cfe70153</code></td></tr><tr><td><span class="el_class">android.util.StateSet</span></td><td><code>ac91d4e19e7b7dda</code></td></tr><tr><td><span class="el_class">android.util.TypedValue</span></td><td><code>56f4780dd91b8873</code></td></tr><tr><td><span class="el_class">android.util.Xml</span></td><td><code>0aedbdae62cbd8fe</code></td></tr><tr><td><span class="el_class">android.view.AbsSavedState</span></td><td><code>f22358e76bf03a50</code></td></tr><tr><td><span class="el_class">android.view.AbsSavedState.1</span></td><td><code>2be94af188eefd4f</code></td></tr><tr><td><span class="el_class">android.view.AbsSavedState.2</span></td><td><code>3a41671a6901b277</code></td></tr><tr><td><span class="el_class">android.view.Choreographer</span></td><td><code>79b78263b40a8795</code></td></tr><tr><td><span class="el_class">android.view.Choreographer.1</span></td><td><code>a008dc33984d2ac9</code></td></tr><tr><td><span class="el_class">android.view.Choreographer.2</span></td><td><code>ee6163f854c21010</code></td></tr><tr><td><span class="el_class">android.view.Choreographer.CallbackQueue</span></td><td><code>af82487a9942ff04</code></td></tr><tr><td><span class="el_class">android.view.Choreographer.CallbackRecord</span></td><td><code>f9c8ba15d0a85819</code></td></tr><tr><td><span class="el_class">android.view.Choreographer.FrameDisplayEventReceiver</span></td><td><code>35267af1eed1df93</code></td></tr><tr><td><span class="el_class">android.view.Choreographer.FrameHandler</span></td><td><code>f628bfbdd80d614d</code></td></tr><tr><td><span class="el_class">android.view.ContextThemeWrapper</span></td><td><code>50e7cbc3ce5496b3</code></td></tr><tr><td><span class="el_class">android.view.Display</span></td><td><code>456438fc12401e80</code></td></tr><tr><td><span class="el_class">android.view.DisplayAdjustments</span></td><td><code>ae7c8f6f10fc67cf</code></td></tr><tr><td><span class="el_class">android.view.DisplayEventReceiver</span></td><td><code>b9f067d4a43bdf86</code></td></tr><tr><td><span class="el_class">android.view.DisplayInfo</span></td><td><code>beb0e936a45215fb</code></td></tr><tr><td><span class="el_class">android.view.DisplayInfo.1</span></td><td><code>8529cbbcfb2fdf3f</code></td></tr><tr><td><span class="el_class">android.view.FocusFinder</span></td><td><code>f795a5f0e5082421</code></td></tr><tr><td><span class="el_class">android.view.FocusFinder.1</span></td><td><code>b41ab39bb46cb4db</code></td></tr><tr><td><span class="el_class">android.view.FocusFinder.SequentialFocusComparator</span></td><td><code>9cde68efe74c8ba2</code></td></tr><tr><td><span class="el_class">android.view.GLES20Canvas</span></td><td><code>84acb13ddf4ff736</code></td></tr><tr><td><span class="el_class">android.view.Gravity</span></td><td><code>66e37e63318b5959</code></td></tr><tr><td><span class="el_class">android.view.HardwareRenderer</span></td><td><code>e281b6b5e62c14fe</code></td></tr><tr><td><span class="el_class">android.view.IRotationWatcher.Stub</span></td><td><code>e9c8078ae26ef30b</code></td></tr><tr><td><span class="el_class">android.view.IWindow.Stub</span></td><td><code>f67ff29469ea8f7b</code></td></tr><tr><td><span class="el_class">android.view.IWindowManager.Stub</span></td><td><code>f70206a6c80d3347</code></td></tr><tr><td><span class="el_class">android.view.InputChannel</span></td><td><code>722f8e54dc67a292</code></td></tr><tr><td><span class="el_class">android.view.InputChannel.1</span></td><td><code>e133b720888ac5b5</code></td></tr><tr><td><span class="el_class">android.view.InputEvent</span></td><td><code>1f2f3abc49bc69bb</code></td></tr><tr><td><span class="el_class">android.view.InputEvent.1</span></td><td><code>c7f7288b54a6c89d</code></td></tr><tr><td><span class="el_class">android.view.InputEventConsistencyVerifier</span></td><td><code>c15985f9eb8f359d</code></td></tr><tr><td><span class="el_class">android.view.InputEventReceiver</span></td><td><code>7d17d62764e0932c</code></td></tr><tr><td><span class="el_class">android.view.KeyEvent.DispatcherState</span></td><td><code>caf4c4766770e5d9</code></td></tr><tr><td><span class="el_class">android.view.LayoutInflater</span></td><td><code>c310503b365b1e11</code></td></tr><tr><td><span class="el_class">android.view.LayoutInflater.FactoryMerger</span></td><td><code>3dadfc6585f0fbc4</code></td></tr><tr><td><span class="el_class">android.view.MenuInflater</span></td><td><code>651cd6b34f26102f</code></td></tr><tr><td><span class="el_class">android.view.MotionEvent</span></td><td><code>73da839a4d619821</code></td></tr><tr><td><span class="el_class">android.view.MotionEvent.1</span></td><td><code>3b464006e110e046</code></td></tr><tr><td><span class="el_class">android.view.MotionEvent.PointerCoords</span></td><td><code>e813e3844043f638</code></td></tr><tr><td><span class="el_class">android.view.MotionEvent.PointerProperties</span></td><td><code>3a01277b732bfaf6</code></td></tr><tr><td><span class="el_class">android.view.RenderNode</span></td><td><code>91d417f868faedef</code></td></tr><tr><td><span class="el_class">android.view.RenderNodeAnimator</span></td><td><code>e644a0ec897c334b</code></td></tr><tr><td><span class="el_class">android.view.RenderNodeAnimator.1</span></td><td><code>60e88d10d2588fe8</code></td></tr><tr><td><span class="el_class">android.view.Surface</span></td><td><code>cdd4c4569c1f414b</code></td></tr><tr><td><span class="el_class">android.view.Surface.1</span></td><td><code>ab4ecec189f2dc2a</code></td></tr><tr><td><span class="el_class">android.view.Surface.CompatibleCanvas</span></td><td><code>1e07298a1aeeb9ae</code></td></tr><tr><td><span class="el_class">android.view.View</span></td><td><code>44056fc86c25cfa6</code></td></tr><tr><td><span class="el_class">android.view.View.10</span></td><td><code>64cb17eb1e96e3ca</code></td></tr><tr><td><span class="el_class">android.view.View.11</span></td><td><code>3e8fe869d3e0cd7b</code></td></tr><tr><td><span class="el_class">android.view.View.12</span></td><td><code>56f02b051a7d3022</code></td></tr><tr><td><span class="el_class">android.view.View.13</span></td><td><code>15f3bd52e59e22df</code></td></tr><tr><td><span class="el_class">android.view.View.14</span></td><td><code>0e9854ddca162a4c</code></td></tr><tr><td><span class="el_class">android.view.View.3</span></td><td><code>5b0891c8b7532978</code></td></tr><tr><td><span class="el_class">android.view.View.4</span></td><td><code>0ea123c0955f60e8</code></td></tr><tr><td><span class="el_class">android.view.View.5</span></td><td><code>e461be0380ac6191</code></td></tr><tr><td><span class="el_class">android.view.View.6</span></td><td><code>6b2018598a8e3e5b</code></td></tr><tr><td><span class="el_class">android.view.View.7</span></td><td><code>8bfa5ea18d53e1b4</code></td></tr><tr><td><span class="el_class">android.view.View.8</span></td><td><code>b891e88f6fa05fa2</code></td></tr><tr><td><span class="el_class">android.view.View.9</span></td><td><code>096d5690e75effba</code></td></tr><tr><td><span class="el_class">android.view.View.AccessibilityDelegate</span></td><td><code>ae329af7baff92c7</code></td></tr><tr><td><span class="el_class">android.view.View.AttachInfo</span></td><td><code>fb0aa283059cd501</code></td></tr><tr><td><span class="el_class">android.view.View.ListenerInfo</span></td><td><code>da26a64931a1e39e</code></td></tr><tr><td><span class="el_class">android.view.View.MeasureSpec</span></td><td><code>e61ba4e285f21f9a</code></td></tr><tr><td><span class="el_class">android.view.View.TransformationInfo</span></td><td><code>708b575595105d46</code></td></tr><tr><td><span class="el_class">android.view.ViewConfiguration</span></td><td><code>5ea557466bdd234a</code></td></tr><tr><td><span class="el_class">android.view.ViewGroup</span></td><td><code>0cb1ee4baa19135f</code></td></tr><tr><td><span class="el_class">android.view.ViewGroup.3</span></td><td><code>ea26f6be00297a9f</code></td></tr><tr><td><span class="el_class">android.view.ViewGroup.LayoutParams</span></td><td><code>6b856afca7eeb602</code></td></tr><tr><td><span class="el_class">android.view.ViewGroup.MarginLayoutParams</span></td><td><code>aaa81cca7c11308c</code></td></tr><tr><td><span class="el_class">android.view.ViewOutlineProvider</span></td><td><code>306f60da19026179</code></td></tr><tr><td><span class="el_class">android.view.ViewOutlineProvider.1</span></td><td><code>2e5a8f9e9ee87f80</code></td></tr><tr><td><span class="el_class">android.view.ViewOutlineProvider.2</span></td><td><code>a6a6b1cd23dda31b</code></td></tr><tr><td><span class="el_class">android.view.ViewOutlineProvider.3</span></td><td><code>7360fd0c7b81d17b</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl</span></td><td><code>423d0f20b0e90a7a</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.1</span></td><td><code>044ee90bc9876c68</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.4</span></td><td><code>4d83c068b6ece234</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.AccessibilityInteractionConnectionManager</span></td><td><code>c3cf29cddb281b10</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.AsyncInputStage</span></td><td><code>18119f93548c68cb</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.ConsumeBatchedInputImmediatelyRunnable</span></td><td><code>2c921ce6be5b5fcb</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.ConsumeBatchedInputRunnable</span></td><td><code>260146107f9f4191</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.EarlyPostImeInputStage</span></td><td><code>9d26de8741409171</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.HighContrastTextManager</span></td><td><code>79a9808c69e6adb5</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.ImeInputStage</span></td><td><code>0ee47cfe098b169e</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.InputStage</span></td><td><code>8e2a614fcce73ef6</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.InvalidateOnAnimationRunnable</span></td><td><code>204ca5d518bd8743</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.NativePostImeInputStage</span></td><td><code>6ac9dc9678e46963</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.NativePreImeInputStage</span></td><td><code>5582df99f1edcc79</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.RunQueue</span></td><td><code>4f5c3ab9bbbbc5d9</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.RunQueue.HandlerAction</span></td><td><code>72439ea660674b47</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.SyntheticInputStage</span></td><td><code>d1964bdab8e89b18</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.SyntheticJoystickHandler</span></td><td><code>f3b1e5e4ccc13ab6</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.SyntheticKeyboardHandler</span></td><td><code>45036cc92c576221</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.SyntheticTouchNavigationHandler</span></td><td><code>e36f9e3cb9bdcba2</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.SyntheticTouchNavigationHandler.1</span></td><td><code>a9771075fc7fe6b7</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.SyntheticTrackballHandler</span></td><td><code>7dea4b1e4009471e</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.TrackballAxis</span></td><td><code>077ce75112efec8e</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.TraversalRunnable</span></td><td><code>57be6ab6cb770bfe</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.ViewPostImeInputStage</span></td><td><code>aa28f128688426fa</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.ViewPreImeInputStage</span></td><td><code>e38c76af33ba3c6e</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.ViewRootHandler</span></td><td><code>875e4dd3f8f5d08e</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.W</span></td><td><code>ade431c49c13141a</code></td></tr><tr><td><span class="el_class">android.view.ViewRootImpl.WindowInputEventReceiver</span></td><td><code>67f7c338ecb92dc6</code></td></tr><tr><td><span class="el_class">android.view.ViewStub</span></td><td><code>3418633fb06283e6</code></td></tr><tr><td><span class="el_class">android.view.ViewTreeObserver</span></td><td><code>4b3b72ca4284cc6b</code></td></tr><tr><td><span class="el_class">android.view.ViewTreeObserver.CopyOnWriteArray</span></td><td><code>d07c7c949f9557a4</code></td></tr><tr><td><span class="el_class">android.view.ViewTreeObserver.CopyOnWriteArray.Access</span></td><td><code>9c0724aaa03f602c</code></td></tr><tr><td><span class="el_class">android.view.ViewTreeObserver.InternalInsetsInfo</span></td><td><code>96f6a729c191e0f7</code></td></tr><tr><td><span class="el_class">android.view.Window</span></td><td><code>4cddf5eb4404a4b0</code></td></tr><tr><td><span class="el_class">android.view.WindowInsets</span></td><td><code>b1b8901f680cf87f</code></td></tr><tr><td><span class="el_class">android.view.WindowLeaked</span></td><td><code>5961f87dfdba2376</code></td></tr><tr><td><span class="el_class">android.view.WindowManager.LayoutParams</span></td><td><code>473ce60ab0343227</code></td></tr><tr><td><span class="el_class">android.view.WindowManager.LayoutParams.1</span></td><td><code>75ce14fb07f6e99d</code></td></tr><tr><td><span class="el_class">android.view.WindowManagerGlobal</span></td><td><code>d2a24aa230e1bc3f</code></td></tr><tr><td><span class="el_class">android.view.WindowManagerGlobal.2</span></td><td><code>dea7816a9360cb6c</code></td></tr><tr><td><span class="el_class">android.view.WindowManagerImpl</span></td><td><code>c3310c938e855652</code></td></tr><tr><td><span class="el_class">android.view.accessibility.AccessibilityEvent</span></td><td><code>49b7a5bd29c5f278</code></td></tr><tr><td><span class="el_class">android.view.accessibility.AccessibilityEvent.1</span></td><td><code>02a7c568f2f7e84d</code></td></tr><tr><td><span class="el_class">android.view.accessibility.AccessibilityManager</span></td><td><code>27bc8d846bf20542</code></td></tr><tr><td><span class="el_class">android.view.accessibility.AccessibilityManager.1</span></td><td><code>3e74a9db20a8247d</code></td></tr><tr><td><span class="el_class">android.view.accessibility.AccessibilityManager.MyHandler</span></td><td><code>6585601e51d6bcc2</code></td></tr><tr><td><span class="el_class">android.view.accessibility.AccessibilityRecord</span></td><td><code>cf891de756f92886</code></td></tr><tr><td><span class="el_class">android.view.accessibility.IAccessibilityManagerClient.Stub</span></td><td><code>92b8e625f43f9d1c</code></td></tr><tr><td><span class="el_class">android.view.animation.AccelerateDecelerateInterpolator</span></td><td><code>4e58e70e36e06e37</code></td></tr><tr><td><span class="el_class">android.view.animation.AnimationUtils</span></td><td><code>380114ea37605b60</code></td></tr><tr><td><span class="el_class">android.view.animation.DecelerateInterpolator</span></td><td><code>4fe00e32bdc13f04</code></td></tr><tr><td><span class="el_class">android.view.animation.LinearInterpolator</span></td><td><code>be559df95c8e442c</code></td></tr><tr><td><span class="el_class">android.view.animation.PathInterpolator</span></td><td><code>4eae09f008910c9d</code></td></tr><tr><td><span class="el_class">android.view.animation.Transformation</span></td><td><code>8850abc6806eac19</code></td></tr><tr><td><span class="el_class">android.view.inputmethod.BaseInputConnection</span></td><td><code>5e98f430bb25ae9d</code></td></tr><tr><td><span class="el_class">android.view.inputmethod.ComposingText</span></td><td><code>50cbda9b9e2ab2f3</code></td></tr><tr><td><span class="el_class">android.view.inputmethod.EditorInfo</span></td><td><code>2d9c018c017e6153</code></td></tr><tr><td><span class="el_class">android.view.inputmethod.EditorInfo.1</span></td><td><code>4274f65bac2c779d</code></td></tr><tr><td><span class="el_class">android.view.inputmethod.InputMethodManager</span></td><td><code>98911b251134a9e9</code></td></tr><tr><td><span class="el_class">android.view.inputmethod.InputMethodManager.1</span></td><td><code>a9b5f7f5cd124be3</code></td></tr><tr><td><span class="el_class">android.view.inputmethod.InputMethodManager.ControlledInputConnectionWrapper</span></td><td><code>56d5c39f9e6e31b4</code></td></tr><tr><td><span class="el_class">android.view.inputmethod.InputMethodManager.H</span></td><td><code>be9e2b107e10231e</code></td></tr><tr><td><span class="el_class">android.view.inputmethod.InputMethodSubtype</span></td><td><code>64129644c58aea9d</code></td></tr><tr><td><span class="el_class">android.view.inputmethod.InputMethodSubtype.1</span></td><td><code>53c5d088cd913646</code></td></tr><tr><td><span class="el_class">android.widget.Button</span></td><td><code>83bedf3cf2c9f121</code></td></tr><tr><td><span class="el_class">android.widget.FrameLayout</span></td><td><code>3e2729a81283b4f2</code></td></tr><tr><td><span class="el_class">android.widget.FrameLayout.LayoutParams</span></td><td><code>7c03efa3a1fceb0b</code></td></tr><tr><td><span class="el_class">android.widget.ImageButton</span></td><td><code>beb6562d141f316b</code></td></tr><tr><td><span class="el_class">android.widget.ImageView</span></td><td><code>7e1ff360e570a08f</code></td></tr><tr><td><span class="el_class">android.widget.ImageView.ScaleType</span></td><td><code>81b92310af0a92cf</code></td></tr><tr><td><span class="el_class">android.widget.LinearLayout</span></td><td><code>f0f70b9a4d779b48</code></td></tr><tr><td><span class="el_class">android.widget.LinearLayout.LayoutParams</span></td><td><code>4e83a5ab25a1a7df</code></td></tr><tr><td><span class="el_class">android.widget.TextView</span></td><td><code>a9ac6d4194054af0</code></td></tr><tr><td><span class="el_class">android.widget.TextView.BufferType</span></td><td><code>30e5b933e205ede8</code></td></tr><tr><td><span class="el_class">android.widget.TextView.Drawables</span></td><td><code>7857a1599743d8f9</code></td></tr><tr><td><span class="el_class">androidx.activity.ComponentActivity</span></td><td><code>c496254a6aa0a19e</code></td></tr><tr><td><span class="el_class">androidx.activity.ComponentActivity.1</span></td><td><code>aff95483ddfbcbe7</code></td></tr><tr><td><span class="el_class">androidx.activity.ComponentActivity.2</span></td><td><code>b52e0ffe3e343563</code></td></tr><tr><td><span class="el_class">androidx.activity.ComponentActivity.3</span></td><td><code>f7b375bc175cd415</code></td></tr><tr><td><span class="el_class">androidx.activity.ComponentActivity.4</span></td><td><code>35c427041888e8fb</code></td></tr><tr><td><span class="el_class">androidx.activity.ComponentActivity.5</span></td><td><code>49c39692c4f00d24</code></td></tr><tr><td><span class="el_class">androidx.activity.ComponentActivity.6</span></td><td><code>cb7195a87c19705f</code></td></tr><tr><td><span class="el_class">androidx.activity.ComponentActivity.Api19Impl</span></td><td><code>03c101ad1a0f8134</code></td></tr><tr><td><span class="el_class">androidx.activity.ComponentActivity.ReportFullyDrawnExecutorApi16Impl</span></td><td><code>b44bd4e90469d23d</code></td></tr><tr><td><span class="el_class">androidx.activity.FullyDrawnReporter</span></td><td><code>b56bfcccb0026b7c</code></td></tr><tr><td><span class="el_class">androidx.activity.ImmLeaksCleaner</span></td><td><code>24bd7f420712b5e5</code></td></tr><tr><td><span class="el_class">androidx.activity.OnBackPressedCallback</span></td><td><code>1668b508065aaa35</code></td></tr><tr><td><span class="el_class">androidx.activity.OnBackPressedDispatcher</span></td><td><code>1da2f24505dca265</code></td></tr><tr><td><span class="el_class">androidx.activity.OnBackPressedDispatcher.LifecycleOnBackPressedCancellable</span></td><td><code>f474aa78633a3e96</code></td></tr><tr><td><span class="el_class">androidx.activity.OnBackPressedDispatcher.OnBackPressedCancellable</span></td><td><code>1571aa611923786d</code></td></tr><tr><td><span class="el_class">androidx.activity.OnBackPressedDispatcher.addCallback.1</span></td><td><code>d302552554d99bca</code></td></tr><tr><td><span class="el_class">androidx.activity.OnBackPressedDispatcher.addCancellableCallback.1</span></td><td><code>f0ea22f5b3a7c4ea</code></td></tr><tr><td><span class="el_class">androidx.activity.ViewTreeOnBackPressedDispatcherOwner</span></td><td><code>fc495ee156cc1e2f</code></td></tr><tr><td><span class="el_class">androidx.activity.contextaware.ContextAwareHelper</span></td><td><code>d66cf6a4c3ba0cdd</code></td></tr><tr><td><span class="el_class">androidx.activity.result.ActivityResultLauncher</span></td><td><code>fd41b89e986af08c</code></td></tr><tr><td><span class="el_class">androidx.activity.result.ActivityResultRegistry</span></td><td><code>572f7ca900f1dfa0</code></td></tr><tr><td><span class="el_class">androidx.activity.result.ActivityResultRegistry.3</span></td><td><code>f89b8af29db58ca5</code></td></tr><tr><td><span class="el_class">androidx.activity.result.ActivityResultRegistry.CallbackAndContract</span></td><td><code>dc74d5ee6212ccb5</code></td></tr><tr><td><span class="el_class">androidx.activity.result.contract.ActivityResultContract</span></td><td><code>f41c8eb7373ac136</code></td></tr><tr><td><span class="el_class">androidx.activity.result.contract.ActivityResultContracts.RequestMultiplePermissions</span></td><td><code>860d1968a08f6b4f</code></td></tr><tr><td><span class="el_class">androidx.activity.result.contract.ActivityResultContracts.RequestMultiplePermissions.Companion</span></td><td><code>25c56ef014ce2eda</code></td></tr><tr><td><span class="el_class">androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult</span></td><td><code>13379fe9c9a8bdba</code></td></tr><tr><td><span class="el_class">androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult.Companion</span></td><td><code>65830ee121b713f6</code></td></tr><tr><td><span class="el_class">androidx.appcompat.R.styleable</span></td><td><code>45b64da7fbdcd8b6</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.ActionBar</span></td><td><code>7492d6e647e40bf9</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.ActionBar.LayoutParams</span></td><td><code>aa711b6d71d1816c</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatActivity</span></td><td><code>54b8e061f4911ecb</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatActivity.1</span></td><td><code>eec69a5aa6e3612e</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatActivity.2</span></td><td><code>0fcafdcdb1b598e5</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatDelegate</span></td><td><code>e16823019142f320</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatDelegate.SerialExecutor</span></td><td><code>a57e244041272409</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatDelegate.ThreadPerTaskExecutor</span></td><td><code>013a271aa3f95cdc</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatDelegateImpl</span></td><td><code>28e2e60e98dd7692</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatDelegateImpl.2</span></td><td><code>bc3fdbbbf01462f0</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatDelegateImpl.3</span></td><td><code>84db9b70706314ed</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatDelegateImpl.5</span></td><td><code>2c67b393dedfe8c9</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatDelegateImpl.ActionBarDrawableToggleImpl</span></td><td><code>d13041513c519d19</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatDelegateImpl.Api21Impl</span></td><td><code>21977d92c6ed10d1</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatDelegateImpl.AppCompatWindowCallback</span></td><td><code>8a5658c377a899f5</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatDelegateImpl.PanelFeatureState</span></td><td><code>8b4e3be4c7fd6836</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppCompatViewInflater</span></td><td><code>4a5fc5dff879e46b</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.AppLocalesMetadataHolderService</span></td><td><code>6874e685be83554e</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.ToolbarActionBar</span></td><td><code>1dde0105c37c03c1</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.ToolbarActionBar.1</span></td><td><code>613c0667b8f8332f</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.ToolbarActionBar.2</span></td><td><code>87317dd54ec67269</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.ToolbarActionBar.ActionMenuPresenterCallback</span></td><td><code>acd398bb0d120e3f</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.ToolbarActionBar.MenuBuilderCallback</span></td><td><code>815a288b555ab991</code></td></tr><tr><td><span class="el_class">androidx.appcompat.app.ToolbarActionBar.ToolbarMenuCallback</span></td><td><code>ba3731791a87b6ef</code></td></tr><tr><td><span class="el_class">androidx.appcompat.content.res.AppCompatResources</span></td><td><code>27b37ff40ee31f16</code></td></tr><tr><td><span class="el_class">androidx.appcompat.view.ActionBarPolicy</span></td><td><code>dbf8bac46e54c04d</code></td></tr><tr><td><span class="el_class">androidx.appcompat.view.SupportMenuInflater</span></td><td><code>6e2ac7470569625c</code></td></tr><tr><td><span class="el_class">androidx.appcompat.view.WindowCallbackWrapper</span></td><td><code>30798682b5c75df0</code></td></tr><tr><td><span class="el_class">androidx.appcompat.view.menu.ActionMenuItem</span></td><td><code>1a9a52b32141cf46</code></td></tr><tr><td><span class="el_class">androidx.appcompat.view.menu.BaseMenuPresenter</span></td><td><code>f04b450d75f36a10</code></td></tr><tr><td><span class="el_class">androidx.appcompat.view.menu.MenuBuilder</span></td><td><code>c525ca93b02afb0e</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ActionMenuPresenter</span></td><td><code>d48599621075951d</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ActionMenuPresenter.OverflowMenuButton</span></td><td><code>3578f9a835decb66</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ActionMenuPresenter.OverflowMenuButton.1</span></td><td><code>91e24d2cec592915</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ActionMenuPresenter.PopupPresenterCallback</span></td><td><code>3bc5381cd453d845</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ActionMenuView</span></td><td><code>189d1e841728c1de</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ActionMenuView.MenuBuilderCallback</span></td><td><code>ca1e6726fa606dc8</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatBackgroundHelper</span></td><td><code>d8e6a9258c4d73e9</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatButton</span></td><td><code>0c3706b71ac229cb</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatDrawableManager</span></td><td><code>7e9aa68b5d55ea7a</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatDrawableManager.1</span></td><td><code>72fc897f788e7c4d</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatEmojiTextHelper</span></td><td><code>4cb8873edd7c32fc</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatImageButton</span></td><td><code>2ce09e55890c4dd9</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatImageHelper</span></td><td><code>a76a050e17370e8b</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatImageView</span></td><td><code>33e0c49baf25c3ba</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatTextClassifierHelper</span></td><td><code>d985acbea45e4cc5</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatTextHelper</span></td><td><code>44da415933494880</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatTextHelper.1</span></td><td><code>c4f4b20051aef667</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatTextView</span></td><td><code>1ef7f6de917c0a2e</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatTextViewAutoSizeHelper</span></td><td><code>8853fbcf32bf1ca2</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.AppCompatTextViewAutoSizeHelper.Impl</span></td><td><code>2635a4c25b67177a</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ContentFrameLayout</span></td><td><code>6cb1814a88bf264e</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.DrawableUtils</span></td><td><code>87848fe01c97d9c0</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.FitWindowsLinearLayout</span></td><td><code>fe49449d10a839f9</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ForwardingListener</span></td><td><code>0b7a843a3076b741</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.LinearLayoutCompat</span></td><td><code>31d803ba3891bf00</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ResourceManagerInternal</span></td><td><code>3cf18de831182b5d</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ResourceManagerInternal.AsldcInflateDelegate</span></td><td><code>0807ee614129e279</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ResourceManagerInternal.AvdcInflateDelegate</span></td><td><code>d5c3242c9e3a59ee</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ResourceManagerInternal.ColorFilterLruCache</span></td><td><code>2542bc99dc22af96</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ResourceManagerInternal.DrawableDelegate</span></td><td><code>84400d9a16a1d02c</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ResourceManagerInternal.VdcInflateDelegate</span></td><td><code>639e058043de110c</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.RtlSpacingHelper</span></td><td><code>a9e57a3f5343bb12</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ThemeUtils</span></td><td><code>7df8cdca383acd46</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.TintContextWrapper</span></td><td><code>bb4933f103c99f40</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.TintInfo</span></td><td><code>440c490e72909835</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.TintTypedArray</span></td><td><code>5f7021cf5cec890a</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.Toolbar</span></td><td><code>3006ac6d9f71cf63</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.Toolbar.1</span></td><td><code>d41c8fc787ebd118</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.Toolbar.2</span></td><td><code>30d1757f3fca15db</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.Toolbar.3</span></td><td><code>3d4a99b52c425b53</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.Toolbar.ExpandedActionViewMenuPresenter</span></td><td><code>c63ba20508d94f51</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.Toolbar.LayoutParams</span></td><td><code>1fbfe26e7d204910</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ToolbarWidgetWrapper</span></td><td><code>f47373adc19052f0</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ToolbarWidgetWrapper.1</span></td><td><code>65d696fd8d3e42c9</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.TooltipCompat</span></td><td><code>07e2a132650b6470</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.TooltipCompatHandler</span></td><td><code>c09935e10b4cf5c7</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.VectorEnabledTintResources</span></td><td><code>ab23114aa5e98cbf</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ViewStubCompat</span></td><td><code>8026361bbc6c3177</code></td></tr><tr><td><span class="el_class">androidx.appcompat.widget.ViewUtils</span></td><td><code>1afb9b9a0a14f804</code></td></tr><tr><td><span class="el_class">androidx.arch.core.executor.ArchTaskExecutor</span></td><td><code>01c3dbadbbe94ad6</code></td></tr><tr><td><span class="el_class">androidx.arch.core.executor.DefaultTaskExecutor</span></td><td><code>9eecf54e794d0efe</code></td></tr><tr><td><span class="el_class">androidx.arch.core.executor.DefaultTaskExecutor.1</span></td><td><code>8ec0914ef49d610f</code></td></tr><tr><td><span class="el_class">androidx.arch.core.executor.TaskExecutor</span></td><td><code>57ef8fb675447796</code></td></tr><tr><td><span class="el_class">androidx.arch.core.internal.FastSafeIterableMap</span></td><td><code>c4479396b204a9d4</code></td></tr><tr><td><span class="el_class">androidx.arch.core.internal.SafeIterableMap</span></td><td><code>84f1db4d146eb4a5</code></td></tr><tr><td><span class="el_class">androidx.arch.core.internal.SafeIterableMap.AscendingIterator</span></td><td><code>75a478325a96c440</code></td></tr><tr><td><span class="el_class">androidx.arch.core.internal.SafeIterableMap.DescendingIterator</span></td><td><code>ce2d5902218681db</code></td></tr><tr><td><span class="el_class">androidx.arch.core.internal.SafeIterableMap.Entry</span></td><td><code>a94ee697109cd0e5</code></td></tr><tr><td><span class="el_class">androidx.arch.core.internal.SafeIterableMap.IteratorWithAdditions</span></td><td><code>1c04a4f4dd90013d</code></td></tr><tr><td><span class="el_class">androidx.arch.core.internal.SafeIterableMap.ListIterator</span></td><td><code>8e307f243f7efacf</code></td></tr><tr><td><span class="el_class">androidx.arch.core.internal.SafeIterableMap.SupportRemove</span></td><td><code>86cf9e1c23f07849</code></td></tr><tr><td><span class="el_class">androidx.collection.ArrayMap</span></td><td><code>d17e0799ee3dedf1</code></td></tr><tr><td><span class="el_class">androidx.collection.ArraySet</span></td><td><code>224d020298aec18f</code></td></tr><tr><td><span class="el_class">androidx.collection.ArraySet.ElementIterator</span></td><td><code>b04a2e69aa17d4a4</code></td></tr><tr><td><span class="el_class">androidx.collection.ArraySetKt</span></td><td><code>183992cf8c952931</code></td></tr><tr><td><span class="el_class">androidx.collection.IndexBasedArrayIterator</span></td><td><code>a10b708075bce986</code></td></tr><tr><td><span class="el_class">androidx.collection.LongSparseArray</span></td><td><code>57692d29680f132d</code></td></tr><tr><td><span class="el_class">androidx.collection.LongSparseArrayKt</span></td><td><code>96bb7c4f0e8a9fe2</code></td></tr><tr><td><span class="el_class">androidx.collection.LruCache</span></td><td><code>ec7c58b2c1208b5a</code></td></tr><tr><td><span class="el_class">androidx.collection.SimpleArrayMap</span></td><td><code>27b4ab5d171df338</code></td></tr><tr><td><span class="el_class">androidx.collection.SparseArrayCompat</span></td><td><code>1b27a06a35b303b0</code></td></tr><tr><td><span class="el_class">androidx.collection.SparseArrayCompatKt</span></td><td><code>30dd3aed35537997</code></td></tr><tr><td><span class="el_class">androidx.collection.SparseArrayKt</span></td><td><code>1d208ba7a0e68e62</code></td></tr><tr><td><span class="el_class">androidx.collection.SparseArrayKt.valueIterator.1</span></td><td><code>6374a0e510455717</code></td></tr><tr><td><span class="el_class">androidx.collection.internal.ContainerHelpersKt</span></td><td><code>4bf564e254e35831</code></td></tr><tr><td><span class="el_class">androidx.collection.internal.Lock</span></td><td><code>6d701b00b7c8ab3e</code></td></tr><tr><td><span class="el_class">androidx.collection.internal.LruHashMap</span></td><td><code>35d7be73630f27b8</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.ArrayLinkedVariables</span></td><td><code>c8eda23bec3eb411</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.ArrayRow</span></td><td><code>e1f6e446da979687</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.Cache</span></td><td><code>48171cdf1b67fde9</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.LinearSystem</span></td><td><code>c8e1f4ba7b591481</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.Pools.SimplePool</span></td><td><code>685abb151cea288d</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.PriorityGoalRow</span></td><td><code>9646070b3f80a2c4</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.PriorityGoalRow.GoalVariableAccessor</span></td><td><code>5f45084139ca28c8</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.SolverVariable</span></td><td><code>87e1598c054cb33b</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.SolverVariable.Type</span></td><td><code>04143bde2debc4d6</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.state.WidgetFrame</span></td><td><code>2387abbc42fa3ff9</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.Chain</span></td><td><code>c066a3752cfb8a75</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.ChainHead</span></td><td><code>10149144d6a03bb0</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.ConstraintAnchor</span></td><td><code>85ca33fd03037424</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.ConstraintAnchor.Type</span></td><td><code>58fab761cabb2cc9</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.ConstraintWidget</span></td><td><code>8db12c2cb5c065d8</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.ConstraintWidget.1</span></td><td><code>76de7532fd56f73a</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour</span></td><td><code>c3b645c78cbb0d4c</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.ConstraintWidgetContainer</span></td><td><code>5f5065e6d0a888cc</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.Optimizer</span></td><td><code>883ce2c85f6c4d9d</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.WidgetContainer</span></td><td><code>f15eec0783dae3e3</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.analyzer.BasicMeasure</span></td><td><code>09d43cc6f251972e</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measure</span></td><td><code>62f12e045410be30</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.analyzer.DependencyGraph</span></td><td><code>abe67811cc4afc0b</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.core.widgets.analyzer.Direct</span></td><td><code>131c1fa296f4063d</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.widget.ConstraintLayout</span></td><td><code>da9c297a5681dc7a</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.widget.ConstraintLayout.1</span></td><td><code>70aefaed86624df8</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.widget.ConstraintLayout.LayoutParams</span></td><td><code>571c4d1fc1724cea</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.widget.ConstraintLayout.LayoutParams.Table</span></td><td><code>0212cdc9c27ed8a2</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.widget.ConstraintLayout.Measurer</span></td><td><code>14e7636e8073655e</code></td></tr><tr><td><span class="el_class">androidx.constraintlayout.widget.R.styleable</span></td><td><code>60f75478419142a0</code></td></tr><tr><td><span class="el_class">androidx.coordinatorlayout.R.styleable</span></td><td><code>0eab79054e303d1a</code></td></tr><tr><td><span class="el_class">androidx.coordinatorlayout.widget.CoordinatorLayout</span></td><td><code>9a363820b9714f33</code></td></tr><tr><td><span class="el_class">androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior</span></td><td><code>e33cf84b79ca53e2</code></td></tr><tr><td><span class="el_class">androidx.coordinatorlayout.widget.CoordinatorLayout.HierarchyChangeListener</span></td><td><code>036bd6107f06a5dc</code></td></tr><tr><td><span class="el_class">androidx.coordinatorlayout.widget.CoordinatorLayout.LayoutParams</span></td><td><code>ffcb5cd392e1f7f8</code></td></tr><tr><td><span class="el_class">androidx.coordinatorlayout.widget.CoordinatorLayout.OnPreDrawListener</span></td><td><code>342f18133aafaa4b</code></td></tr><tr><td><span class="el_class">androidx.coordinatorlayout.widget.CoordinatorLayout.ViewElevationComparator</span></td><td><code>9f090a337592bacc</code></td></tr><tr><td><span class="el_class">androidx.coordinatorlayout.widget.DirectedAcyclicGraph</span></td><td><code>e01a37a6825ee19a</code></td></tr><tr><td><span class="el_class">androidx.coordinatorlayout.widget.ViewGroupUtils</span></td><td><code>414f09936beb426c</code></td></tr><tr><td><span class="el_class">androidx.core.R.styleable</span></td><td><code>905ea3253f34f24e</code></td></tr><tr><td><span class="el_class">androidx.core.app.ActivityCompat</span></td><td><code>a2dcf0917b4a07a5</code></td></tr><tr><td><span class="el_class">androidx.core.app.ComponentActivity</span></td><td><code>474895bf1f344d06</code></td></tr><tr><td><span class="el_class">androidx.core.app.NavUtils</span></td><td><code>4c2813e66dd56f4e</code></td></tr><tr><td><span class="el_class">androidx.core.content.ContextCompat</span></td><td><code>9321e5919d3edc28</code></td></tr><tr><td><span class="el_class">androidx.core.content.ContextCompat.Api21Impl</span></td><td><code>d368933ee4fb49cc</code></td></tr><tr><td><span class="el_class">androidx.core.content.res.ColorStateListInflaterCompat</span></td><td><code>355df990ae974d64</code></td></tr><tr><td><span class="el_class">androidx.core.content.res.ComplexColorCompat</span></td><td><code>4c19c3c4a0061d4c</code></td></tr><tr><td><span class="el_class">androidx.core.content.res.GrowingArrayUtils</span></td><td><code>25873d9c58a7e4b5</code></td></tr><tr><td><span class="el_class">androidx.core.content.res.ResourcesCompat</span></td><td><code>96c9b2038cc4c82f</code></td></tr><tr><td><span class="el_class">androidx.core.content.res.ResourcesCompat.ColorStateListCacheEntry</span></td><td><code>3b9639282e5d421b</code></td></tr><tr><td><span class="el_class">androidx.core.content.res.ResourcesCompat.ColorStateListCacheKey</span></td><td><code>806569d2b5b0cfad</code></td></tr><tr><td><span class="el_class">androidx.core.content.res.ResourcesCompat.FontCallback</span></td><td><code>5c5da836db705b9c</code></td></tr><tr><td><span class="el_class">androidx.core.content.res.TypedArrayUtils</span></td><td><code>f497ddf3b18d5c1c</code></td></tr><tr><td><span class="el_class">androidx.core.graphics.ColorUtils</span></td><td><code>fd4c2dfaabdb2460</code></td></tr><tr><td><span class="el_class">androidx.core.graphics.PathParser</span></td><td><code>bfb69628ffd23bbc</code></td></tr><tr><td><span class="el_class">androidx.core.graphics.PathParser.ExtractFloatResult</span></td><td><code>1dec7bf91ac9ce3d</code></td></tr><tr><td><span class="el_class">androidx.core.graphics.PathParser.PathDataNode</span></td><td><code>837a6e5cf238197f</code></td></tr><tr><td><span class="el_class">androidx.core.graphics.drawable.DrawableCompat</span></td><td><code>e8a7bab904dfad78</code></td></tr><tr><td><span class="el_class">androidx.core.graphics.drawable.DrawableCompat.Api21Impl</span></td><td><code>d2bb6534c7853e93</code></td></tr><tr><td><span class="el_class">androidx.core.math.MathUtils</span></td><td><code>40cd44e67b55b2b4</code></td></tr><tr><td><span class="el_class">androidx.core.os.CancellationSignal</span></td><td><code>4412d24c2bd322c8</code></td></tr><tr><td><span class="el_class">androidx.core.os.LocaleListCompat</span></td><td><code>f38c613c2b6c0ac8</code></td></tr><tr><td><span class="el_class">androidx.core.os.LocaleListCompat.Api21Impl</span></td><td><code>b9567b4ff7680e2e</code></td></tr><tr><td><span class="el_class">androidx.core.os.LocaleListCompatWrapper</span></td><td><code>e6a690808f742039</code></td></tr><tr><td><span class="el_class">androidx.core.util.ObjectsCompat</span></td><td><code>7c35993573ecf776</code></td></tr><tr><td><span class="el_class">androidx.core.util.Pools.SimplePool</span></td><td><code>549f85584cd94562</code></td></tr><tr><td><span class="el_class">androidx.core.util.Pools.SynchronizedPool</span></td><td><code>e7b2160cc6d2d03d</code></td></tr><tr><td><span class="el_class">androidx.core.util.Preconditions</span></td><td><code>05dddb29948dbf39</code></td></tr><tr><td><span class="el_class">androidx.core.view.AccessibilityDelegateCompat</span></td><td><code>84df4d3c07113e28</code></td></tr><tr><td><span class="el_class">androidx.core.view.AccessibilityDelegateCompat.AccessibilityDelegateAdapter</span></td><td><code>8131efc59e2bd226</code></td></tr><tr><td><span class="el_class">androidx.core.view.GravityCompat</span></td><td><code>7b480b22aab3e7a3</code></td></tr><tr><td><span class="el_class">androidx.core.view.LayoutInflaterCompat</span></td><td><code>5698752fe95d4ed2</code></td></tr><tr><td><span class="el_class">androidx.core.view.MenuHostHelper</span></td><td><code>d28cce56101451be</code></td></tr><tr><td><span class="el_class">androidx.core.view.NestedScrollingParentHelper</span></td><td><code>f13bfde81fd6f519</code></td></tr><tr><td><span class="el_class">androidx.core.view.ViewCompat</span></td><td><code>eb587a8f001dd5f0</code></td></tr><tr><td><span class="el_class">androidx.core.view.ViewCompat.2</span></td><td><code>a5ef8644d443846e</code></td></tr><tr><td><span class="el_class">androidx.core.view.ViewCompat.AccessibilityPaneVisibilityManager</span></td><td><code>177e67b541d20606</code></td></tr><tr><td><span class="el_class">androidx.core.view.ViewCompat.AccessibilityViewProperty</span></td><td><code>407fc7c7a651c0f4</code></td></tr><tr><td><span class="el_class">androidx.core.view.ViewCompat.Api20Impl</span></td><td><code>f09a227e20db2550</code></td></tr><tr><td><span class="el_class">androidx.core.view.ViewCompat.Api21Impl</span></td><td><code>77dc738e506016a6</code></td></tr><tr><td><span class="el_class">androidx.core.view.ViewCompat.Api21Impl.1</span></td><td><code>2569cc7abb26d372</code></td></tr><tr><td><span class="el_class">androidx.core.view.ViewConfigurationCompat</span></td><td><code>6e3c9c44bf5a697c</code></td></tr><tr><td><span class="el_class">androidx.core.widget.ImageViewCompat</span></td><td><code>77a801df7c764ac8</code></td></tr><tr><td><span class="el_class">androidx.core.widget.ImageViewCompat.Api21Impl</span></td><td><code>8ab3f83af7f680d2</code></td></tr><tr><td><span class="el_class">androidx.core.widget.TextViewCompat</span></td><td><code>89eddf78c3260301</code></td></tr><tr><td><span class="el_class">androidx.customview.view.AbsSavedState</span></td><td><code>c8160359074c32ad</code></td></tr><tr><td><span class="el_class">androidx.customview.view.AbsSavedState.1</span></td><td><code>f96207ce68681f02</code></td></tr><tr><td><span class="el_class">androidx.customview.view.AbsSavedState.2</span></td><td><code>eb24eea7b2aee37b</code></td></tr><tr><td><span class="el_class">androidx.emoji2.text.EmojiCompat</span></td><td><code>a0ab5316d1bac995</code></td></tr><tr><td><span class="el_class">androidx.emoji2.viewsintegration.EmojiInputFilter</span></td><td><code>3314fa2f6f4953f4</code></td></tr><tr><td><span class="el_class">androidx.emoji2.viewsintegration.EmojiTextViewHelper</span></td><td><code>6cafdddde00966b8</code></td></tr><tr><td><span class="el_class">androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal</span></td><td><code>618b4ccc3885a494</code></td></tr><tr><td><span class="el_class">androidx.emoji2.viewsintegration.EmojiTextViewHelper.HelperInternal19</span></td><td><code>b0d2e2d50c0db24e</code></td></tr><tr><td><span class="el_class">androidx.emoji2.viewsintegration.EmojiTextViewHelper.SkippingHelper19</span></td><td><code>900ee92ea26d48ff</code></td></tr><tr><td><span class="el_class">androidx.fragment.R.styleable</span></td><td><code>2bfe4e77902744b2</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.BackStackRecord</span></td><td><code>82c8852dcad51e65</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.DefaultSpecialEffectsController</span></td><td><code>acc841d38a9e04e7</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.Fragment</span></td><td><code>b09d80d4560cb180</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.Fragment.1</span></td><td><code>3b3e69b61b78bfdc</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.Fragment.2</span></td><td><code>09c6698e38f075e7</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.Fragment.5</span></td><td><code>48808512d4a042c4</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.Fragment.6</span></td><td><code>346dd98637c77095</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.Fragment.AnimationInfo</span></td><td><code>e0e62aafe795fd18</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.Fragment.Api19Impl</span></td><td><code>86d8d8d08787fe78</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.Fragment.OnPreAttachedListener</span></td><td><code>0abaf0c3c8cdff01</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentActivity</span></td><td><code>ef67727ace1bac58</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentActivity.HostCallbacks</span></td><td><code>a82e0d580d25acba</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentContainer</span></td><td><code>7b6f7190997ab06d</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentContainerView</span></td><td><code>e9e9e7d4496d6219</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentController</span></td><td><code>83f8f600ef115373</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentFactory</span></td><td><code>8296788d5ecfa16b</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentHostCallback</span></td><td><code>231c74b1f3a07f38</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentLayoutInflaterFactory</span></td><td><code>595a534fad2ca61e</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentLifecycleCallbacksDispatcher</span></td><td><code>0a3b9ca54fba0e35</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManager</span></td><td><code>fd057ab14bb563b4</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManager.1</span></td><td><code>7956cef735a2ea2f</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManager.10</span></td><td><code>4a205c027477b3ce</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManager.2</span></td><td><code>7988625ef040b6f5</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManager.3</span></td><td><code>0ae6f918eddff1ea</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManager.4</span></td><td><code>d6cbb88aad8de840</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManager.5</span></td><td><code>35e6df943d082345</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManager.7</span></td><td><code>da597eca354aebf3</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManager.8</span></td><td><code>b63274b8c4c27d4f</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManager.9</span></td><td><code>efcc740e76ae9c49</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManager.FragmentIntentSenderContract</span></td><td><code>7dda123f43f16544</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManagerImpl</span></td><td><code>e58de039a17b5755</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManagerViewModel</span></td><td><code>a16d2aaebf315cc8</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentManagerViewModel.1</span></td><td><code>bf8fc735d2e99470</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentStateManager</span></td><td><code>780dab92c0be8de3</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentStateManager.1</span></td><td><code>27cd8b40daf9d6fe</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentStateManager.2</span></td><td><code>cb813a4647236e1e</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentStore</span></td><td><code>1112ee2f1cc64706</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentTransaction</span></td><td><code>b322611a5ba922dd</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentTransaction.Op</span></td><td><code>9025ecef67eab12e</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.FragmentViewLifecycleOwner</span></td><td><code>cc3aefeffc9ccf11</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.SpecialEffectsController</span></td><td><code>092cd20fac31b6c7</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.SpecialEffectsController.Companion</span></td><td><code>8d49ac84b88bd94c</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.SpecialEffectsController.FragmentStateManagerOperation</span></td><td><code>6902e6498c439f44</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.SpecialEffectsController.Operation</span></td><td><code>c0da8612d6c53226</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.SpecialEffectsController.Operation.LifecycleImpact</span></td><td><code>df8598064f3c8236</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.SpecialEffectsController.Operation.State</span></td><td><code>b4acf6e1f5d626ee</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.SpecialEffectsController.Operation.State.Companion</span></td><td><code>0cc1c2da0de4593d</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.SpecialEffectsController.Operation.State.WhenMappings</span></td><td><code>0b6452e1835d69f4</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.SpecialEffectsController.Operation.WhenMappings</span></td><td><code>691b20a00245e161</code></td></tr><tr><td><span class="el_class">androidx.fragment.app.SpecialEffectsController.WhenMappings</span></td><td><code>8b8a6d25010772d0</code></td></tr><tr><td><span class="el_class">androidx.interpolator.view.animation.FastOutLinearInInterpolator</span></td><td><code>e1f2a0dcbb88531c</code></td></tr><tr><td><span class="el_class">androidx.interpolator.view.animation.FastOutSlowInInterpolator</span></td><td><code>3a96b4eb76b4a9d0</code></td></tr><tr><td><span class="el_class">androidx.interpolator.view.animation.LinearOutSlowInInterpolator</span></td><td><code>1de161f93a9d815f</code></td></tr><tr><td><span class="el_class">androidx.interpolator.view.animation.LookupTableInterpolator</span></td><td><code>62a1ade9dfe8c038</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.Lifecycle</span></td><td><code>8ede3948d3664775</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.Lifecycle.Event</span></td><td><code>e0d5a73aab270a71</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.Lifecycle.Event.Companion</span></td><td><code>8d2a19d5a6bb8921</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.Lifecycle.Event.Companion.WhenMappings</span></td><td><code>8526e4fa58b06d6b</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.Lifecycle.Event.WhenMappings</span></td><td><code>9c4ef7b8418d841a</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.Lifecycle.State</span></td><td><code>748a627a05120123</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.LifecycleRegistry</span></td><td><code>5a8ca0da7d33b126</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.LifecycleRegistry.Companion</span></td><td><code>97e588f75c204051</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.LifecycleRegistry.ObserverWithState</span></td><td><code>aa1cc4dbe889883f</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.LifecycleRegistry_androidKt</span></td><td><code>c72b07e720fd4eaa</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.Lifecycling</span></td><td><code>4dd75c24cc11b295</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.LiveData</span></td><td><code>acdba213c73b0d4f</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.LiveData.1</span></td><td><code>f77da7edf5dc8dfd</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.LiveData.LifecycleBoundObserver</span></td><td><code>0a4c46baf38847b9</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.LiveData.ObserverWrapper</span></td><td><code>e9c25f82604d4959</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.MutableLiveData</span></td><td><code>cef720a3d8e886ee</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ReportFragment</span></td><td><code>15611ec905cea94d</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ReportFragment.Companion</span></td><td><code>13d9caf113cb9a33</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.SavedStateHandleAttacher</span></td><td><code>26697c5ee80a8204</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.SavedStateHandleSupport</span></td><td><code>94880788967e7e05</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.SavedStateHandleSupport.DEFAULT_ARGS_KEY.1</span></td><td><code>4d69d4bf570e2d5e</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY.1</span></td><td><code>04dee1545b21422f</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY.1</span></td><td><code>babc9f69d89fe569</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.SavedStateHandleSupport.savedStateHandlesVM.1</span></td><td><code>61681206bcf2ec52</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.SavedStateHandlesProvider</span></td><td><code>3e948fa4678eaaa9</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.SavedStateHandlesProvider.viewModel.2</span></td><td><code>426848fc0f001e54</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.SavedStateHandlesVM</span></td><td><code>6c1b307874434320</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.SavedStateViewModelFactory</span></td><td><code>6a28f39cc3792e37</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewModel</span></td><td><code>24475c2bb148bb61</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewModelProvider</span></td><td><code>e01383162a0d142b</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory</span></td><td><code>5a97827efe7e55d9</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.Companion</span></td><td><code>a7be9f37296cf8d9</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.Companion.APPLICATION_KEY.1</span></td><td><code>dd88ed6889d3dfcf</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewModelProvider.Companion</span></td><td><code>042251002379ab4a</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewModelProvider.Factory</span></td><td><code>2af01e21b04bb50a</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewModelProvider.Factory.Companion</span></td><td><code>90f1d775621c3f5c</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewModelProvider.NewInstanceFactory</span></td><td><code>a101d3f9e11443d4</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewModelProvider.NewInstanceFactory.Companion</span></td><td><code>2082e774e598ef95</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewModelProvider.OnRequeryFactory</span></td><td><code>08d879daec923caa</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewModelStore</span></td><td><code>35ba917c818e6eac</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewTreeLifecycleOwner</span></td><td><code>9bec79bdb1b3a82e</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.ViewTreeViewModelStoreOwner</span></td><td><code>2e02939364126c40</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.CreationExtras</span></td><td><code>a4f45ca68bfce819</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.CreationExtras.Empty</span></td><td><code>4287b1c9c5ea8d49</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.InitializerViewModelFactory</span></td><td><code>9f95593786bf60b9</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.InitializerViewModelFactoryBuilder</span></td><td><code>b5f6e0e9d484a2d9</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.MutableCreationExtras</span></td><td><code>2871792c11dfdb44</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.ViewModelInitializer</span></td><td><code>b2a25c18d3b0eea8</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.ViewModelProviderImpl</span></td><td><code>74a59e5be6e9d65c</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.ViewModelProviderImpl_androidKt</span></td><td><code>c643bb592e8c0c68</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.internal.SynchronizedObject</span></td><td><code>4f866dfbc772e55b</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.internal.ViewModelImpl</span></td><td><code>bee54c94311c1fdd</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.internal.ViewModelProviders</span></td><td><code>9ddc85ca8ee48a67</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.internal.ViewModelProviders.ViewModelKey</span></td><td><code>7d134b27da5256db</code></td></tr><tr><td><span class="el_class">androidx.lifecycle.viewmodel.internal.ViewModelProviders_jvmKt</span></td><td><code>47e24c10c98fdac8</code></td></tr><tr><td><span class="el_class">androidx.loader.app.LoaderManager</span></td><td><code>7795a986f6e3e902</code></td></tr><tr><td><span class="el_class">androidx.loader.app.LoaderManagerImpl</span></td><td><code>539d1607ef27ffaf</code></td></tr><tr><td><span class="el_class">androidx.loader.app.LoaderManagerImpl.LoaderViewModel</span></td><td><code>16def97226c4e351</code></td></tr><tr><td><span class="el_class">androidx.loader.app.LoaderManagerImpl.LoaderViewModel.1</span></td><td><code>98a1b97ce73bcb6a</code></td></tr><tr><td><span class="el_class">androidx.navigation.ActivityKt</span></td><td><code>08cbe6723ca4ab66</code></td></tr><tr><td><span class="el_class">androidx.navigation.ActivityNavigator</span></td><td><code>0f8a8d81cfe8be94</code></td></tr><tr><td><span class="el_class">androidx.navigation.ActivityNavigator.Companion</span></td><td><code>b411d619103eea3e</code></td></tr><tr><td><span class="el_class">androidx.navigation.ActivityNavigator.hostActivity.1</span></td><td><code>2174606c32a9943e</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavAction</span></td><td><code>2d4a9bdcafd156d5</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavBackStackEntry</span></td><td><code>6b23868bd93380d9</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavBackStackEntry.Companion</span></td><td><code>081246529600ac85</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavBackStackEntry.defaultFactory.2</span></td><td><code>9dd21f22fc8cb778</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavBackStackEntry.savedStateHandle.2</span></td><td><code>e5d10d1f6a0f54da</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavController</span></td><td><code>54106c08959b9256</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavController.Companion</span></td><td><code>7ec4e84827bb20b8</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavController.NavControllerNavigatorState</span></td><td><code>83a5d55c98a3b177</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavController.activity.1</span></td><td><code>702c02c8e4075512</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavController.navInflater.2</span></td><td><code>1f8c0307197360fb</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavController.navigate.5</span></td><td><code>bf7d9296c150157f</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavController.onBackPressedCallback.1</span></td><td><code>46dbffbe266f24fa</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavControllerViewModel</span></td><td><code>6f87a64f8107db8b</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavControllerViewModel.Companion</span></td><td><code>29fc455b87d2a4a1</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavControllerViewModel.Companion.FACTORY.1</span></td><td><code>f8e6e0bbd9d2ad67</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavDeepLinkRequest</span></td><td><code>c45715467df3c5df</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavDestination</span></td><td><code>54960e0b065c5747</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavDestination.Companion</span></td><td><code>eafb4c9da91a68d6</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavDestination.Companion.hierarchy.1</span></td><td><code>afe60d42c7f81575</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavGraph</span></td><td><code>a4a69bad3208c6fa</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavGraph.Companion</span></td><td><code>1d36be19a46e26d9</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavGraph.Companion.childHierarchy.1</span></td><td><code>d70c4f87025f81f4</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavGraph.iterator.1</span></td><td><code>f6061c739f739d4b</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavGraphNavigator</span></td><td><code>d242162d7a8a280f</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavHostController</span></td><td><code>6077b263d513c58d</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavInflater</span></td><td><code>e9164786d034524b</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavInflater.Companion</span></td><td><code>2ee1ffac1d3249a1</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavOptions</span></td><td><code>9e4f3c70aa06c914</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavOptions.Builder</span></td><td><code>f34d7937394f0f32</code></td></tr><tr><td><span class="el_class">androidx.navigation.Navigation</span></td><td><code>0cf148cb88b9d799</code></td></tr><tr><td><span class="el_class">androidx.navigation.Navigation.findViewNavController.1</span></td><td><code>4de981bc19e46a41</code></td></tr><tr><td><span class="el_class">androidx.navigation.Navigation.findViewNavController.2</span></td><td><code>0fc49002e71410b6</code></td></tr><tr><td><span class="el_class">androidx.navigation.Navigator</span></td><td><code>9e84277b92b27ff6</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavigatorProvider</span></td><td><code>234ce5deadb106ab</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavigatorProvider.Companion</span></td><td><code>9097d861f1235d9e</code></td></tr><tr><td><span class="el_class">androidx.navigation.NavigatorState</span></td><td><code>fce7721808da292b</code></td></tr><tr><td><span class="el_class">androidx.navigation.R.styleable</span></td><td><code>c795be7b8ecf56eb</code></td></tr><tr><td><span class="el_class">androidx.navigation.common.R.styleable</span></td><td><code>6c8e11285acd8f15</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.DialogFragmentNavigator</span></td><td><code>2812584bc6866841</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.DialogFragmentNavigator.Companion</span></td><td><code>2fc474315d352b5d</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.DialogFragmentNavigator.observer.1</span></td><td><code>e69ff79c81b23ecd</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.FragmentNavigator</span></td><td><code>94b073dec8d158d8</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.FragmentNavigator.ClearEntryStateViewModel</span></td><td><code>151a5c4053068dce</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.FragmentNavigator.Companion</span></td><td><code>66fd2020766125ab</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.FragmentNavigator.Destination</span></td><td><code>69019c78c55993a5</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.FragmentNavigator.attachClearViewModel.1</span></td><td><code>dc07dcfdf6e13894</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.FragmentNavigator.attachClearViewModel.viewModel.1.1</span></td><td><code>47da05b082d0982c</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.FragmentNavigator.attachObservers.1</span></td><td><code>135192d5968bd657</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.FragmentNavigator.fragmentViewObserver.1</span></td><td><code>1f9d5ce4c2c64dfd</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.FragmentNavigator.onAttach.2</span></td><td><code>f903190b1a1aacb3</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.FragmentNavigator.sam.androidx_lifecycle_Observer.0</span></td><td><code>4c9ee9a27ea47675</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.NavHostFragment</span></td><td><code>65a9e359fc59b6af</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.NavHostFragment.Companion</span></td><td><code>755e5012b2ef61bc</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.NavHostFragment.navHostController.2</span></td><td><code>ebee35e5f7706bb3</code></td></tr><tr><td><span class="el_class">androidx.navigation.fragment.R.styleable</span></td><td><code>2eb82009f004e787</code></td></tr><tr><td><span class="el_class">androidx.navigation.ui.AbstractAppBarOnDestinationChangedListener</span></td><td><code>86d1f8534e1065c0</code></td></tr><tr><td><span class="el_class">androidx.navigation.ui.ActionBarOnDestinationChangedListener</span></td><td><code>656154e710d5df84</code></td></tr><tr><td><span class="el_class">androidx.navigation.ui.ActivityKt</span></td><td><code>1c56f1f112828175</code></td></tr><tr><td><span class="el_class">androidx.navigation.ui.AppBarConfiguration</span></td><td><code>abf1b403474e5a8b</code></td></tr><tr><td><span class="el_class">androidx.navigation.ui.AppBarConfiguration.Builder</span></td><td><code>a2ce0d348c57f28e</code></td></tr><tr><td><span class="el_class">androidx.navigation.ui.NavigationUI</span></td><td><code>c4081538d15bf7b8</code></td></tr><tr><td><span class="el_class">androidx.profileinstaller.ProfileInstallReceiver</span></td><td><code>2ded08f6c55a6e34</code></td></tr><tr><td><span class="el_class">androidx.savedstate.Recreator</span></td><td><code>a6e7d0e8a533be56</code></td></tr><tr><td><span class="el_class">androidx.savedstate.Recreator.Companion</span></td><td><code>14f00145964e1a2d</code></td></tr><tr><td><span class="el_class">androidx.savedstate.SavedStateRegistry</span></td><td><code>7cbecc82d7bbcd9b</code></td></tr><tr><td><span class="el_class">androidx.savedstate.SavedStateRegistry.Companion</span></td><td><code>8c0bffc62ceaaa3e</code></td></tr><tr><td><span class="el_class">androidx.savedstate.SavedStateRegistryController</span></td><td><code>3707ffcd01c3affc</code></td></tr><tr><td><span class="el_class">androidx.savedstate.SavedStateRegistryController.Companion</span></td><td><code>1888b3e26859b327</code></td></tr><tr><td><span class="el_class">androidx.savedstate.ViewTreeSavedStateRegistryOwner</span></td><td><code>dad7e2735651fa1c</code></td></tr><tr><td><span class="el_class">androidx.test.internal.runner.intent.IntentMonitorImpl</span></td><td><code>83b219f8fb181885</code></td></tr><tr><td><span class="el_class">androidx.test.internal.runner.lifecycle.ActivityLifecycleMonitorImpl</span></td><td><code>841a56d9199219f9</code></td></tr><tr><td><span class="el_class">androidx.test.internal.runner.lifecycle.ActivityLifecycleMonitorImpl.ActivityStatus</span></td><td><code>8799e918dd3106f1</code></td></tr><tr><td><span class="el_class">androidx.test.internal.runner.lifecycle.ApplicationLifecycleMonitorImpl</span></td><td><code>2f7972350aedcddf</code></td></tr><tr><td><span class="el_class">androidx.test.internal.util.Checks</span></td><td><code>ee24f5d0bb86a058</code></td></tr><tr><td><span class="el_class">androidx.test.platform.app.InstrumentationRegistry</span></td><td><code>de1de24769be6ec6</code></td></tr><tr><td><span class="el_class">androidx.test.runner.intent.IntentMonitorRegistry</span></td><td><code>953d3bdb9b53446c</code></td></tr><tr><td><span class="el_class">androidx.test.runner.lifecycle.ActivityLifecycleMonitorRegistry</span></td><td><code>69cdfc1193da45f0</code></td></tr><tr><td><span class="el_class">androidx.test.runner.lifecycle.ApplicationLifecycleMonitorRegistry</span></td><td><code>31fc17a6a532aebd</code></td></tr><tr><td><span class="el_class">androidx.test.runner.lifecycle.ApplicationStage</span></td><td><code>6b87e3fc99c1f80b</code></td></tr><tr><td><span class="el_class">androidx.test.runner.lifecycle.Stage</span></td><td><code>b29d327d842291e4</code></td></tr><tr><td><span class="el_class">androidx.vectordrawable.graphics.drawable.AndroidResources</span></td><td><code>1f6e7692e8836fdc</code></td></tr><tr><td><span class="el_class">androidx.vectordrawable.graphics.drawable.VectorDrawableCommon</span></td><td><code>f6f5ce3bba2bbc35</code></td></tr><tr><td><span class="el_class">androidx.vectordrawable.graphics.drawable.VectorDrawableCompat</span></td><td><code>4dead50ea7222afd</code></td></tr><tr><td><span class="el_class">androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.VFullPath</span></td><td><code>3b87731c614c84c1</code></td></tr><tr><td><span class="el_class">androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.VGroup</span></td><td><code>e2762864c2818e1e</code></td></tr><tr><td><span class="el_class">androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.VObject</span></td><td><code>e68cd6cae8a356f0</code></td></tr><tr><td><span class="el_class">androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.VPath</span></td><td><code>29ac353bee74d105</code></td></tr><tr><td><span class="el_class">androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.VPathRenderer</span></td><td><code>29f506a884168590</code></td></tr><tr><td><span class="el_class">androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.VectorDrawableCompatState</span></td><td><code>fbc59409fe4cef3d</code></td></tr><tr><td><span class="el_class">androidx.viewbinding.ViewBindings</span></td><td><code>7863099849de5e66</code></td></tr><tr><td><span class="el_class">com.android.internal.R.styleable</span></td><td><code>9152cab521768f91</code></td></tr><tr><td><span class="el_class">com.android.internal.os.SomeArgs</span></td><td><code>d7c30f50ef91f0ed</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.PolicyManager</span></td><td><code>5e7a673ca9403c80</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.impl.PhoneFallbackEventHandler</span></td><td><code>d24a9ac1929fbca6</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.impl.PhoneLayoutInflater</span></td><td><code>1eb4669160134e21</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.impl.PhoneWindow</span></td><td><code>e86483be20a3e933</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.impl.PhoneWindow.1</span></td><td><code>7892eeb90fd92ef8</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.impl.PhoneWindow.DecorView</span></td><td><code>943ba7371f0a43e3</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.impl.PhoneWindow.DialogMenuCallback</span></td><td><code>164cbda9de90803e</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.impl.PhoneWindow.PanelFeatureState</span></td><td><code>6ffca4e92bae22bf</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.impl.PhoneWindow.PanelFeatureState.SavedState</span></td><td><code>9ffd3a3d4fa99434</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.impl.PhoneWindow.PanelFeatureState.SavedState.1</span></td><td><code>a684f6257f0e99dd</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.impl.PhoneWindow.RotationWatcher</span></td><td><code>1a1d8d498b0efa42</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.impl.PhoneWindow.RotationWatcher.1</span></td><td><code>e5124225a0d41b82</code></td></tr><tr><td><span class="el_class">com.android.internal.policy.impl.Policy</span></td><td><code>97badd69a2ba4851</code></td></tr><tr><td><span class="el_class">com.android.internal.util.ArrayUtils</span></td><td><code>505166c568129bdd</code></td></tr><tr><td><span class="el_class">com.android.internal.util.GrowingArrayUtils</span></td><td><code>5f1a01e2c4bee10a</code></td></tr><tr><td><span class="el_class">com.android.internal.util.Preconditions</span></td><td><code>3e35845f1d3af208</code></td></tr><tr><td><span class="el_class">com.android.internal.util.XmlUtils</span></td><td><code>d102066fb03a16a0</code></td></tr><tr><td><span class="el_class">com.android.internal.view.IInputConnectionWrapper</span></td><td><code>22d83893f69386c1</code></td></tr><tr><td><span class="el_class">com.android.internal.view.IInputConnectionWrapper.MyHandler</span></td><td><code>3faacb8b3b8cec91</code></td></tr><tr><td><span class="el_class">com.android.internal.view.IInputContext.Stub</span></td><td><code>2f983c8cee9336d3</code></td></tr><tr><td><span class="el_class">com.android.internal.view.IInputMethodClient.Stub</span></td><td><code>f32dd565f02c486c</code></td></tr><tr><td><span class="el_class">com.android.internal.view.IInputMethodManager.Stub</span></td><td><code>45e6f38e8e9983f2</code></td></tr><tr><td><span class="el_class">com.android.internal.widget.BackgroundFallback</span></td><td><code>12012da14294dbdc</code></td></tr><tr><td><span class="el_class">com.esotericsoftware.kryo.io.Input</span></td><td><code>82caa4ac8d2c9ad6</code></td></tr><tr><td><span class="el_class">com.esotericsoftware.kryo.io.Output</span></td><td><code>2e152e7951e62ecf</code></td></tr><tr><td><a href="com.example.domain/MyUseCase.html" class="el_class">com.example.domain.MyUseCase</a></td><td><code>e5f141ecacabc9bc</code></td></tr><tr><td><a href="com.example.kmp/KMPObject.html" class="el_class">com.example.kmp.KMPObject</a></td><td><code>303ad3e4570906ab</code></td></tr><tr><td><span class="el_class">com.example.kmp.KMPObject</span></td><td><code>e22d7b6f8e7bf28a</code></td></tr><tr><td><a href="com.example.kmp/KMPObjectAndroid.html" class="el_class">com.example.kmp.KMPObjectAndroid</a></td><td><code>34190cd8a1a8ac8c</code></td></tr><tr><td><span class="el_class">com.example.kmp.KMPObjectAndroidTest</span></td><td><code>5eb165d9b3638009</code></td></tr><tr><td><a href="com.example.kmp/KMPObjectJVM.html" class="el_class">com.example.kmp.KMPObjectJVM</a></td><td><code>55a5084c606664e6</code></td></tr><tr><td><span class="el_class">com.example.kmp.KMPObjectJVMTest</span></td><td><code>f0216cab6cc7b6d2</code></td></tr><tr><td><span class="el_class">com.example.kmp.KMPObjectTest</span></td><td><code>949903e6f37a8c87</code></td></tr><tr><td><span class="el_class">com.example.kmp.KMPObjectTest</span></td><td><code>d86314a1969aa77b</code></td></tr><tr><td><a href="com.example.kmp/PlatformKt.html" class="el_class">com.example.kmp.PlatformKt</a></td><td><code>0b212b9f7be4e39b</code></td></tr><tr><td><span class="el_class">com.example.kmp.PlatformKt</span></td><td><code>610ace1e83631587</code></td></tr><tr><td><span class="el_class">com.example.login.ExampleUnitTest</span></td><td><code>59206f88b231cc88</code></td></tr><tr><td><a href="com.example.login.ui.data/LoginDataSource.html" class="el_class">com.example.login.ui.data.LoginDataSource</a></td><td><code>45ede0824cf3cecc</code></td></tr><tr><td><span class="el_class">com.example.login.ui.data.LoginDataSourceTest</span></td><td><code>fd88872e36d0494a</code></td></tr><tr><td><a href="com.example.login.ui.data/Result.html" class="el_class">com.example.login.ui.data.Result</a></td><td><code>4b67b0478b4a5bf7</code></td></tr><tr><td><a href="com.example.login.ui.data/Result$Success.html" class="el_class">com.example.login.ui.data.Result.Success</a></td><td><code>aba0000cceba4060</code></td></tr><tr><td><a href="com.example.login.ui.data.model/LoggedInUser.html" class="el_class">com.example.login.ui.data.model.LoggedInUser</a></td><td><code>c07094d0f3d9be8c</code></td></tr><tr><td><span class="el_class">com.example.myapplication.ExampleUnitTest</span></td><td><code>53d4f17df1253186</code></td></tr><tr><td><span class="el_class">com.example.myapplication.ExampleUnitTest</span></td><td><code>f8d88ee62c0c1900</code></td></tr><tr><td><a href="com.example.myapplication/FirstFragment.html" class="el_class">com.example.myapplication.FirstFragment</a></td><td><code>1e34eeac635220e9</code></td></tr><tr><td><span class="el_class">com.example.myapplication.FirstFragment</span></td><td><code>75fb829590677d72</code></td></tr><tr><td><span class="el_class">com.example.myapplication.MainActivity</span></td><td><code>1b0d6d99f46f4931</code></td></tr><tr><td><a href="com.example.myapplication/MainActivity.html" class="el_class">com.example.myapplication.MainActivity</a></td><td><code>f2886cf2630fd3ea</code></td></tr><tr><td><span class="el_class">com.example.myapplication.MainActivity.inlined.sam.i.androidx_navigation_ui_AppBarConfiguration_OnNavigateUpListener.0</span></td><td><code>f0626797a13d336d</code></td></tr><tr><td><a href="com.example.myapplication/MainActivity$onPostCreate$$inlined$AppBarConfiguration$default$1.html" class="el_class">com.example.myapplication.MainActivity.onPostCreate..inlined.AppBarConfiguration.default.1</a></td><td><code>3e2a4f7be6ff2841</code></td></tr><tr><td><span class="el_class">com.example.myapplication.MainActivityTest</span></td><td><code>0220b0c93ee91da6</code></td></tr><tr><td><span class="el_class">com.example.myapplication.MainActivityTest</span></td><td><code>2be1e005fc01b0f6</code></td></tr><tr><td><a href="com.example.myapplication.databinding/ActivityMainBinding.html" class="el_class">com.example.myapplication.databinding.ActivityMainBinding</a></td><td><code>6ae5a375057d3a51</code></td></tr><tr><td><a href="com.example.myapplication.databinding/FragmentFirstBinding.html" class="el_class">com.example.myapplication.databinding.FragmentFirstBinding</a></td><td><code>7ef9d56d40a8cc13</code></td></tr><tr><td><span class="el_class">com.google.android.material.R.styleable</span></td><td><code>a8f83a195e18957e</code></td></tr><tr><td><span class="el_class">com.google.android.material.animation.AnimationUtils</span></td><td><code>7f3ffd75162e0499</code></td></tr><tr><td><span class="el_class">com.google.android.material.animation.MotionSpec</span></td><td><code>9abe51cea2d9069b</code></td></tr><tr><td><span class="el_class">com.google.android.material.animation.MotionTiming</span></td><td><code>dccc2d7f1c58bbf9</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.AppBarLayout</span></td><td><code>1f0c7bff101eabca</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.AppBarLayout.1</span></td><td><code>ecc2d5100e3e58ec</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.AppBarLayout.BaseBehavior</span></td><td><code>f191cb8b2cb7c1b0</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.AppBarLayout.BaseBehavior.2</span></td><td><code>7ff165f465b4d979</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.AppBarLayout.BaseBehavior.SavedState</span></td><td><code>55c6691f3a714056</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.AppBarLayout.BaseBehavior.SavedState.1</span></td><td><code>14b3699795269771</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.AppBarLayout.Behavior</span></td><td><code>c82a2c891b9c9560</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.AppBarLayout.LayoutParams</span></td><td><code>9b5194b6bd772d75</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.AppBarLayout.ScrollingViewBehavior</span></td><td><code>73e1bf8225a761b5</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.HeaderBehavior</span></td><td><code>bf38b79bda547e91</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.HeaderScrollingViewBehavior</span></td><td><code>df60e8640de6bb70</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.ViewOffsetBehavior</span></td><td><code>c49df1ddcddf926f</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.ViewOffsetHelper</span></td><td><code>61d57e877ebb1493</code></td></tr><tr><td><span class="el_class">com.google.android.material.appbar.ViewUtilsLollipop</span></td><td><code>113b35940757815b</code></td></tr><tr><td><span class="el_class">com.google.android.material.button.MaterialButton</span></td><td><code>8bc98693d0547e2a</code></td></tr><tr><td><span class="el_class">com.google.android.material.button.MaterialButton.SavedState</span></td><td><code>ba163657f8139e9d</code></td></tr><tr><td><span class="el_class">com.google.android.material.button.MaterialButton.SavedState.1</span></td><td><code>e973ee54bfa6b3b0</code></td></tr><tr><td><span class="el_class">com.google.android.material.button.MaterialButtonHelper</span></td><td><code>93f72387ec4614a2</code></td></tr><tr><td><span class="el_class">com.google.android.material.color.MaterialColors</span></td><td><code>d3c84e8410c51310</code></td></tr><tr><td><span class="el_class">com.google.android.material.drawable.DrawableUtils</span></td><td><code>5f10f9cc10ddaf9d</code></td></tr><tr><td><span class="el_class">com.google.android.material.elevation.ElevationOverlayProvider</span></td><td><code>1b79341a6f05c3ad</code></td></tr><tr><td><span class="el_class">com.google.android.material.expandable.ExpandableWidgetHelper</span></td><td><code>f9977b3e4ebc47cf</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.BorderDrawable</span></td><td><code>6a21244b7e965bb8</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.BorderDrawable.BorderState</span></td><td><code>15b5060835f10506</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.FloatingActionButton</span></td><td><code>f82c148b71282a93</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.FloatingActionButton.BaseBehavior</span></td><td><code>80d4481bf7e42b25</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.FloatingActionButton.Behavior</span></td><td><code>a2237d5d5a136c6d</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.FloatingActionButton.ShadowDelegateImpl</span></td><td><code>a45480a2b83e7aff</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.FloatingActionButtonImpl</span></td><td><code>a70054c0fea340a0</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.DisabledElevationAnimation</span></td><td><code>f94ae8d7acfe2e32</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.ElevateToHoveredFocusedTranslationZAnimation</span></td><td><code>522ed1f4bef670b8</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.ElevateToPressedTranslationZAnimation</span></td><td><code>6f9e235a967d3ae7</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.ResetElevationAnimation</span></td><td><code>164a79fee80dd28d</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.FloatingActionButtonImpl.ShadowAnimatorImpl</span></td><td><code>e1e8a4601cc99b4b</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.FloatingActionButtonImplLollipop</span></td><td><code>6487b6dfa9ac108a</code></td></tr><tr><td><span class="el_class">com.google.android.material.floatingactionbutton.FloatingActionButtonImplLollipop.AlwaysStatefulMaterialShapeDrawable</span></td><td><code>ff9949b0be0557c6</code></td></tr><tr><td><span class="el_class">com.google.android.material.internal.StateListAnimator</span></td><td><code>583dc1784ed23bcb</code></td></tr><tr><td><span class="el_class">com.google.android.material.internal.StateListAnimator.1</span></td><td><code>0d51b6637c17ebda</code></td></tr><tr><td><span class="el_class">com.google.android.material.internal.StateListAnimator.Tuple</span></td><td><code>87d9bcb6c68531a6</code></td></tr><tr><td><span class="el_class">com.google.android.material.internal.ThemeEnforcement</span></td><td><code>37c03958bb82dbc7</code></td></tr><tr><td><span class="el_class">com.google.android.material.internal.ViewUtils</span></td><td><code>f1e937caf9b6d84e</code></td></tr><tr><td><span class="el_class">com.google.android.material.internal.VisibilityAwareImageButton</span></td><td><code>bb23383b2da7727b</code></td></tr><tr><td><span class="el_class">com.google.android.material.motion.MotionUtils</span></td><td><code>5f6337e98162070e</code></td></tr><tr><td><span class="el_class">com.google.android.material.resources.MaterialAttributes</span></td><td><code>ea6df97d8b8f1b34</code></td></tr><tr><td><span class="el_class">com.google.android.material.resources.MaterialResources</span></td><td><code>1cdf2bda0aa17c15</code></td></tr><tr><td><span class="el_class">com.google.android.material.ripple.RippleUtils</span></td><td><code>6d60de30cfa4e6d7</code></td></tr><tr><td><span class="el_class">com.google.android.material.shadow.ShadowRenderer</span></td><td><code>8ecfaf9b6e030001</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.AbsoluteCornerSize</span></td><td><code>59052a9d26591817</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.CornerTreatment</span></td><td><code>c191934aae80e418</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.EdgeTreatment</span></td><td><code>74e87e4d065143ac</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.MaterialShapeDrawable</span></td><td><code>9c731f027476cce9</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.MaterialShapeDrawable.1</span></td><td><code>bc91b7721340efa9</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.MaterialShapeDrawable.MaterialShapeDrawableState</span></td><td><code>0a2abf471ff85a62</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.MaterialShapeUtils</span></td><td><code>47ef186305323a2f</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.RelativeCornerSize</span></td><td><code>2999985232597e26</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.RoundedCornerTreatment</span></td><td><code>98a35e5a90757804</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.ShapeAppearanceModel</span></td><td><code>5afe8c47c5d2557e</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.ShapeAppearanceModel.Builder</span></td><td><code>246db4a645312647</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.ShapeAppearancePathProvider</span></td><td><code>523c6cb141b68c0e</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.ShapeAppearancePathProvider.Lazy</span></td><td><code>5168ee3804493a01</code></td></tr><tr><td><span class="el_class">com.google.android.material.shape.ShapePath</span></td><td><code>0b21de17d9a6d164</code></td></tr><tr><td><span class="el_class">com.google.android.material.textview.MaterialTextView</span></td><td><code>8e4e4c17b8365e3f</code></td></tr><tr><td><span class="el_class">com.google.android.material.theme.MaterialComponentsViewInflater</span></td><td><code>5984a9bbad164385</code></td></tr><tr><td><span class="el_class">com.google.android.material.theme.overlay.MaterialThemeOverlay</span></td><td><code>4bbb39a90f40a4b9</code></td></tr><tr><td><span class="el_class">com.google.common.base.Absent</span></td><td><code>9cfaec0f2086724c</code></td></tr><tr><td><span class="el_class">com.google.common.base.AbstractIterator</span></td><td><code>e75de8ba1cab4d8a</code></td></tr><tr><td><span class="el_class">com.google.common.base.AbstractIterator.State</span></td><td><code>ba0d8d0700091db1</code></td></tr><tr><td><span class="el_class">com.google.common.base.CharMatcher</span></td><td><code>11847e03cb8d4b8f</code></td></tr><tr><td><span class="el_class">com.google.common.base.CharMatcher.FastMatcher</span></td><td><code>e4765cd9afdd6eaa</code></td></tr><tr><td><span class="el_class">com.google.common.base.CharMatcher.Is</span></td><td><code>1d55bf93c162d979</code></td></tr><tr><td><span class="el_class">com.google.common.base.CharMatcher.NamedFastMatcher</span></td><td><code>500c8f7669759f01</code></td></tr><tr><td><span class="el_class">com.google.common.base.CharMatcher.None</span></td><td><code>cf2b09a65cebbe29</code></td></tr><tr><td><span class="el_class">com.google.common.base.NullnessCasts</span></td><td><code>d8750832055df29e</code></td></tr><tr><td><span class="el_class">com.google.common.base.Objects</span></td><td><code>2ddc258a83340210</code></td></tr><tr><td><span class="el_class">com.google.common.base.Optional</span></td><td><code>70c1cd0b12f9073d</code></td></tr><tr><td><span class="el_class">com.google.common.base.Platform</span></td><td><code>1ae062134082a3c3</code></td></tr><tr><td><span class="el_class">com.google.common.base.Platform.JdkPatternCompiler</span></td><td><code>ceeebf788b8924cc</code></td></tr><tr><td><span class="el_class">com.google.common.base.Preconditions</span></td><td><code>49bf118cf8f0a4bc</code></td></tr><tr><td><span class="el_class">com.google.common.base.Splitter</span></td><td><code>af25b7fd2a859399</code></td></tr><tr><td><span class="el_class">com.google.common.base.Splitter.1</span></td><td><code>ce7c5bd339c03a3c</code></td></tr><tr><td><span class="el_class">com.google.common.base.Splitter.1.1</span></td><td><code>de71d7024ffc3a5c</code></td></tr><tr><td><span class="el_class">com.google.common.base.Splitter.5</span></td><td><code>d6035c3532492d5e</code></td></tr><tr><td><span class="el_class">com.google.common.base.Splitter.SplittingIterator</span></td><td><code>855c357bd78740d3</code></td></tr><tr><td><span class="el_class">com.google.common.base.StandardSystemProperty</span></td><td><code>f7d480113bd0d8cf</code></td></tr><tr><td><span class="el_class">com.google.common.base.Strings</span></td><td><code>f03e1c1f324ccf8f</code></td></tr><tr><td><span class="el_class">com.google.common.base.Suppliers</span></td><td><code>a4985c99154c2a54</code></td></tr><tr><td><span class="el_class">com.google.common.base.Suppliers.NonSerializableMemoizingSupplier</span></td><td><code>d4cb714a7d39c37e</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractIndexedListIterator</span></td><td><code>38e6a230ad76bdfd</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractListMultimap</span></td><td><code>563dccab2b32db27</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractMapBasedMultimap</span></td><td><code>9b970c93f6e2f73b</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractMapBasedMultimap.AsMap</span></td><td><code>2e2dc2c0b58f2112</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractMapBasedMultimap.AsMap.AsMapEntries</span></td><td><code>842069fab3ab68e2</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractMapBasedMultimap.AsMap.AsMapIterator</span></td><td><code>9d6b9e3325f7e2b9</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractMapBasedMultimap.RandomAccessWrappedList</span></td><td><code>6bb2ca0e8c742c8c</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractMapBasedMultimap.WrappedCollection</span></td><td><code>393afeb998b9a31a</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractMapBasedMultimap.WrappedCollection.WrappedIterator</span></td><td><code>7b91b1fa1975c262</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractMapBasedMultimap.WrappedList</span></td><td><code>fd4fd6acbed48508</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractMapEntry</span></td><td><code>3742a1c160a7a7bd</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractMultimap</span></td><td><code>3b55e555026372c8</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractSetMultimap</span></td><td><code>4855eb04eb82a2fc</code></td></tr><tr><td><span class="el_class">com.google.common.collect.AbstractTable</span></td><td><code>e2b5e4007ee251ab</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ArrayListMultimap</span></td><td><code>cc059d9fab7af9a5</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ArrayListMultimapGwtSerializationDependencies</span></td><td><code>1f2a6abfcb1f2f84</code></td></tr><tr><td><span class="el_class">com.google.common.collect.BaseImmutableMultimap</span></td><td><code>00832defe7ee1f50</code></td></tr><tr><td><span class="el_class">com.google.common.collect.CollectPreconditions</span></td><td><code>9851970082ca27d1</code></td></tr><tr><td><span class="el_class">com.google.common.collect.CompactHashMap</span></td><td><code>9900fb59c256d00e</code></td></tr><tr><td><span class="el_class">com.google.common.collect.CompactHashMap.2</span></td><td><code>a9a368b6ba282d1e</code></td></tr><tr><td><span class="el_class">com.google.common.collect.CompactHashMap.3</span></td><td><code>38735a3278532330</code></td></tr><tr><td><span class="el_class">com.google.common.collect.CompactHashMap.EntrySetView</span></td><td><code>cdff7eb81233f13a</code></td></tr><tr><td><span class="el_class">com.google.common.collect.CompactHashMap.Itr</span></td><td><code>81785f73723e011a</code></td></tr><tr><td><span class="el_class">com.google.common.collect.CompactHashMap.MapEntry</span></td><td><code>ad11d1d6922cdf30</code></td></tr><tr><td><span class="el_class">com.google.common.collect.CompactHashMap.ValuesView</span></td><td><code>b1dcb4446e447d9c</code></td></tr><tr><td><span class="el_class">com.google.common.collect.CompactHashing</span></td><td><code>60c127df97a94cb3</code></td></tr><tr><td><span class="el_class">com.google.common.collect.EmptyImmutableListMultimap</span></td><td><code>924f9ea9eefec984</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ExplicitOrdering</span></td><td><code>dcfac8ae9537ba67</code></td></tr><tr><td><span class="el_class">com.google.common.collect.HashBasedTable</span></td><td><code>f008ec22212a03e1</code></td></tr><tr><td><span class="el_class">com.google.common.collect.HashBasedTable.Factory</span></td><td><code>e430673a7bb3ae3e</code></td></tr><tr><td><span class="el_class">com.google.common.collect.HashBiMap</span></td><td><code>91d456b37607e72b</code></td></tr><tr><td><span class="el_class">com.google.common.collect.HashBiMap.Inverse</span></td><td><code>0a8ed12a47e63831</code></td></tr><tr><td><span class="el_class">com.google.common.collect.HashMultimap</span></td><td><code>8fe9ddc1546161c4</code></td></tr><tr><td><span class="el_class">com.google.common.collect.HashMultimapGwtSerializationDependencies</span></td><td><code>0ec183824a825fc7</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Hashing</span></td><td><code>34773f12913a037d</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ImmutableCollection</span></td><td><code>845c009e67e92164</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ImmutableCollection.ArrayBasedBuilder</span></td><td><code>bc2c4bc4d5529c8d</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ImmutableCollection.Builder</span></td><td><code>64ca53842950ed76</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ImmutableEntry</span></td><td><code>3c8bb7615eff1322</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ImmutableList</span></td><td><code>9c03f21982867eb3</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ImmutableList.Builder</span></td><td><code>d75ca5bf4bdc75f9</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ImmutableList.Itr</span></td><td><code>b24adbfad248f79f</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ImmutableListMultimap</span></td><td><code>6eabb798940b5ecc</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ImmutableMap</span></td><td><code>370fdb8cec22ba27</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ImmutableMap.Builder</span></td><td><code>3b9f19456ed109bd</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ImmutableMultimap</span></td><td><code>f2c10020c307a163</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ImmutableSet</span></td><td><code>3e93b42bfd969c54</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Iterables</span></td><td><code>170c779b55b59075</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Iterators</span></td><td><code>66f0b0a79f6c13ff</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Lists</span></td><td><code>f9ef7a3f75215828</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Lists.OnePlusArrayList</span></td><td><code>37a1abb178e725b6</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Maps</span></td><td><code>66163342d4ea3ea9</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Maps.EntrySet</span></td><td><code>20fa15af1ca4bc93</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Maps.ViewCachingAbstractMap</span></td><td><code>475e9fd091f3cfab</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Multimaps</span></td><td><code>9ad6157213840ec0</code></td></tr><tr><td><span class="el_class">com.google.common.collect.ObjectArrays</span></td><td><code>72415c5ca7518713</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Ordering</span></td><td><code>9482051e02f33163</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Platform</span></td><td><code>98bb9ed9ede64965</code></td></tr><tr><td><span class="el_class">com.google.common.collect.RegularImmutableList</span></td><td><code>e061b8a0d6916816</code></td></tr><tr><td><span class="el_class">com.google.common.collect.RegularImmutableMap</span></td><td><code>7adce46e49e7ad7b</code></td></tr><tr><td><span class="el_class">com.google.common.collect.RegularImmutableMap.EntrySet</span></td><td><code>72eee7b585531a00</code></td></tr><tr><td><span class="el_class">com.google.common.collect.RegularImmutableMap.EntrySet.1</span></td><td><code>b4454e78c0ca7c24</code></td></tr><tr><td><span class="el_class">com.google.common.collect.RegularImmutableSet</span></td><td><code>38aa4b0b13c807e4</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Sets</span></td><td><code>eb99121e024af767</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Sets.ImprovedAbstractSet</span></td><td><code>9c9f94138ecf623b</code></td></tr><tr><td><span class="el_class">com.google.common.collect.SingletonImmutableSet</span></td><td><code>b8130bc6efc336b8</code></td></tr><tr><td><span class="el_class">com.google.common.collect.StandardTable</span></td><td><code>4d4400cb0a7bd487</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Synchronized</span></td><td><code>5786feb22175b628</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Synchronized.SynchronizedMap</span></td><td><code>2879f94849f34639</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Synchronized.SynchronizedMultimap</span></td><td><code>f34d4b04f2b20375</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Synchronized.SynchronizedNavigableMap</span></td><td><code>0f56cd340ea55d46</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Synchronized.SynchronizedObject</span></td><td><code>6f0be5a00772d4ac</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Synchronized.SynchronizedSetMultimap</span></td><td><code>9d6df289a8d90efd</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Synchronized.SynchronizedSortedMap</span></td><td><code>b30629ddafcb856a</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Synchronized.SynchronizedTable</span></td><td><code>6872b6f6a6c158c4</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Tables</span></td><td><code>1b28b59c1d787b42</code></td></tr><tr><td><span class="el_class">com.google.common.collect.Tables.1</span></td><td><code>1bb366f103b13638</code></td></tr><tr><td><span class="el_class">com.google.common.collect.UnmodifiableIterator</span></td><td><code>54659ee58d1feea2</code></td></tr><tr><td><span class="el_class">com.google.common.collect.UnmodifiableListIterator</span></td><td><code>e9308061829d0733</code></td></tr><tr><td><span class="el_class">com.google.common.math.IntMath</span></td><td><code>77889c3cde129c34</code></td></tr><tr><td><span class="el_class">com.google.common.primitives.ImmutableIntArray</span></td><td><code>14b3a3eae2107ea9</code></td></tr><tr><td><span class="el_class">com.google.common.primitives.Ints</span></td><td><code>32696b040d7478ac</code></td></tr><tr><td><span class="el_class">com.google.common.primitives.Shorts</span></td><td><code>583fec8523c38989</code></td></tr><tr><td><span class="el_class">com.google.common.primitives.UnsignedBytes</span></td><td><code>b83ec34093dac2ed</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy10</span></td><td><code>67c536bd27878ca0</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy13</span></td><td><code>9cdc99b821552e12</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy14</span></td><td><code>f9ccf8d30d6bc5a0</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy17</span></td><td><code>c63e0b7d773af901</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy19</span></td><td><code>324cef7fa1aebacb</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy20</span></td><td><code>083cd5a8438be938</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy21</span></td><td><code>bdb4e6955f5c7814</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy22</span></td><td><code>cb8ef4a3bfd416be</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy23</span></td><td><code>2ef30d9d5c4b1270</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy24</span></td><td><code>b3d013dc01be920c</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy25</span></td><td><code>9125844b45eb0f9e</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy26</span></td><td><code>2e372372dde131bb</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy27</span></td><td><code>f1779ae797797114</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy28</span></td><td><code>1d9184dc8089c7cf</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy28</span></td><td><code>9b07928cb1bc865b</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy29</span></td><td><code>5dcf28cefa7af5f5</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy3</span></td><td><code>dd3c2373445d9f1d</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy30</span></td><td><code>52cc9c3828a21c86</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy31</span></td><td><code>6a122353be836c32</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy32</span></td><td><code>c8362b222ecc487f</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy33</span></td><td><code>0fc3608e68fe04f4</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy34</span></td><td><code>3c42cc9cd7fdde60</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy35</span></td><td><code>41eabfced178c434</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy36</span></td><td><code>8dbd050888bd662f</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy37</span></td><td><code>53f5ec932f71d3f7</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy38</span></td><td><code>2b56a160da9bc022</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy39</span></td><td><code>a7bbc8d80d6e1317</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy39</span></td><td><code>e4b82c26d9a52607</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy4</span></td><td><code>7dd479f192b99cb1</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy40</span></td><td><code>92d929ecc4280c5e</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy40</span></td><td><code>cb2284561afc03d7</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy41</span></td><td><code>4067798af2994960</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy41</span></td><td><code>7a90c129242c17d6</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy42</span></td><td><code>af6e884b9c184ab0</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy42</span></td><td><code>32c4e3b17cdc0903</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy43</span></td><td><code>b9abba345d751f8d</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy43</span></td><td><code>54653c4650da053c</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy44</span></td><td><code>ce4245ff9f82db1c</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy45</span></td><td><code>8f827298e6909fbb</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy45</span></td><td><code>788602f193179c36</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy46</span></td><td><code>a4a55ad073368193</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy46</span></td><td><code>76147c61c69e729c</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy5</span></td><td><code>4be41e62abcc15b0</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy6</span></td><td><code>8bd066e9b6f3165b</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy6</span></td><td><code>13b9650abd7db61b</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy7</span></td><td><code>fbbb3279fd8c0c36</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy7</span></td><td><code>ef9f999eaa801682</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy7</span></td><td><code>acced3eac31120d2</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy8</span></td><td><code>9bf289b09b7cce62</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy9</span></td><td><code>1d7ad79841e04ee9</code></td></tr><tr><td><span class="el_class">com.sun.proxy..Proxy9</span></td><td><code>143a4f4361ed019b</code></td></tr><tr><td><span class="el_class">com.sun.security.sasl.gsskerb.JdkSASL</span></td><td><code>0c62ff81c63adfc3</code></td></tr><tr><td><span class="el_class">com.sun.security.sasl.gsskerb.JdkSASL.1</span></td><td><code>05a8c4f68b91922c</code></td></tr><tr><td><span class="el_class">com.sun.security.sasl.gsskerb.JdkSASL.ProviderService</span></td><td><code>a9af044e12647567</code></td></tr><tr><td><span class="el_class">dalvik.system.CloseGuard</span></td><td><code>10803cca4be69a80</code></td></tr><tr><td><span class="el_class">dalvik.system.CloseGuard.DefaultReporter</span></td><td><code>5d5892e5c3215125</code></td></tr><tr><td><span class="el_class">dalvik.system.VMRuntime</span></td><td><code>1381fcf902419bd6</code></td></tr><tr><td><span class="el_class">javax.annotation.meta.When</span></td><td><code>584296a1ba8ea611</code></td></tr><tr><td><span class="el_class">kotlin.LazyKt__LazyJVMKt</span></td><td><code>c4006747935bf43f</code></td></tr><tr><td><span class="el_class">kotlin.Pair</span></td><td><code>0e1f769aa78d3c81</code></td></tr><tr><td><span class="el_class">kotlin.SynchronizedLazyImpl</span></td><td><code>67fe1cabed14d998</code></td></tr><tr><td><span class="el_class">kotlin.TuplesKt</span></td><td><code>73fc166e1cdf59a1</code></td></tr><tr><td><span class="el_class">kotlin.UNINITIALIZED_VALUE</span></td><td><code>9d21ce0b5d02a20b</code></td></tr><tr><td><span class="el_class">kotlin.Unit</span></td><td><code>554478e9c307c2dc</code></td></tr><tr><td><span class="el_class">kotlin.annotation.AnnotationRetention</span></td><td><code>cec9a17b2e5b9cab</code></td></tr><tr><td><span class="el_class">kotlin.annotation.AnnotationTarget</span></td><td><code>0240d3e2479dddee</code></td></tr><tr><td><span class="el_class">kotlin.collections.AbstractCollection</span></td><td><code>357f4ee29ec81239</code></td></tr><tr><td><span class="el_class">kotlin.collections.AbstractList</span></td><td><code>55504eb944fc2960</code></td></tr><tr><td><span class="el_class">kotlin.collections.AbstractList.Companion</span></td><td><code>5927fe7e3a2b1d4c</code></td></tr><tr><td><span class="el_class">kotlin.collections.AbstractMutableList</span></td><td><code>536f05067cb9543f</code></td></tr><tr><td><span class="el_class">kotlin.collections.ArrayDeque</span></td><td><code>b3a9e1e8aa27751f</code></td></tr><tr><td><span class="el_class">kotlin.collections.ArrayDeque.Companion</span></td><td><code>fabca75731c56137</code></td></tr><tr><td><span class="el_class">kotlin.collections.ArraysKt___ArraysJvmKt</span></td><td><code>6eebcbff0f15e6b2</code></td></tr><tr><td><span class="el_class">kotlin.collections.ArraysKt___ArraysKt</span></td><td><code>e98676e55dd807a7</code></td></tr><tr><td><span class="el_class">kotlin.collections.ArraysUtilJVM</span></td><td><code>497ca26a9b6d5c88</code></td></tr><tr><td><span class="el_class">kotlin.collections.CollectionsKt__CollectionsJVMKt</span></td><td><code>9be96b2d20c3081f</code></td></tr><tr><td><span class="el_class">kotlin.collections.CollectionsKt__CollectionsKt</span></td><td><code>07d0446fa265de1d</code></td></tr><tr><td><span class="el_class">kotlin.collections.CollectionsKt__IterablesKt</span></td><td><code>7cffa9aa9ea325d8</code></td></tr><tr><td><span class="el_class">kotlin.collections.CollectionsKt__MutableCollectionsKt</span></td><td><code>c874258f66349b85</code></td></tr><tr><td><span class="el_class">kotlin.collections.CollectionsKt___CollectionsJvmKt</span></td><td><code>8ff65b95f135fbe3</code></td></tr><tr><td><span class="el_class">kotlin.collections.CollectionsKt___CollectionsKt</span></td><td><code>12fa841cbeff4f16</code></td></tr><tr><td><span class="el_class">kotlin.collections.EmptyIterator</span></td><td><code>af4cd78cdd520ee4</code></td></tr><tr><td><span class="el_class">kotlin.collections.EmptyList</span></td><td><code>8f83bb62c41eabcb</code></td></tr><tr><td><span class="el_class">kotlin.collections.EmptySet</span></td><td><code>faba48d68af48fb2</code></td></tr><tr><td><span class="el_class">kotlin.collections.MapsKt__MapsJVMKt</span></td><td><code>3c9ffe1f33792021</code></td></tr><tr><td><span class="el_class">kotlin.collections.MapsKt__MapsKt</span></td><td><code>873baf349511e2b5</code></td></tr><tr><td><span class="el_class">kotlin.collections.SetsKt__SetsKt</span></td><td><code>683a772c1208bb67</code></td></tr><tr><td><span class="el_class">kotlin.collections.SetsKt___SetsKt</span></td><td><code>a3f19d4a367fe1e0</code></td></tr><tr><td><span class="el_class">kotlin.enums.EnumEntriesKt</span></td><td><code>651420a85e949fe4</code></td></tr><tr><td><span class="el_class">kotlin.enums.EnumEntriesList</span></td><td><code>ed559417c27ed546</code></td></tr><tr><td><span class="el_class">kotlin.internal.PlatformImplementations</span></td><td><code>959d76edaa35c7d3</code></td></tr><tr><td><span class="el_class">kotlin.internal.PlatformImplementationsKt</span></td><td><code>f9423c4345e4263d</code></td></tr><tr><td><span class="el_class">kotlin.internal.jdk7.JDK7PlatformImplementations</span></td><td><code>e95af69030ace511</code></td></tr><tr><td><span class="el_class">kotlin.internal.jdk8.JDK8PlatformImplementations</span></td><td><code>ab79a9481c92c42d</code></td></tr><tr><td><span class="el_class">kotlin.internal.jdk8.JDK8PlatformImplementations.ReflectSdkVersion</span></td><td><code>82d22166e1e0ab81</code></td></tr><tr><td><span class="el_class">kotlin.jdk7.AutoCloseableKt</span></td><td><code>f69c02e7d034edd2</code></td></tr><tr><td><span class="el_class">kotlin.jvm.JvmClassMappingKt</span></td><td><code>b162c9b91b53d411</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.CallableReference</span></td><td><code>a428ae983e956d67</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.CallableReference.NoReceiver</span></td><td><code>b1bebdf64b63dd41</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.ClassReference</span></td><td><code>9a5f21b94e5d9152</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.ClassReference.Companion</span></td><td><code>f1625dddc6aa47bd</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.CollectionToArray</span></td><td><code>4c58a01f9b35f571</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.FunctionReference</span></td><td><code>03542f497676a7bd</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.FunctionReferenceImpl</span></td><td><code>a94eb161ad8d6eb1</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.Intrinsics</span></td><td><code>482b054e11f4fd1b</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.Lambda</span></td><td><code>2a6572d30bbfcb2b</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.Ref.BooleanRef</span></td><td><code>95f8e4dadfe0ade8</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.Ref.ObjectRef</span></td><td><code>17f5869c95f70261</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.Reflection</span></td><td><code>d4abfc114c3389d1</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.ReflectionFactory</span></td><td><code>7cdd4bfbf639662a</code></td></tr><tr><td><span class="el_class">kotlin.jvm.internal.TypeIntrinsics</span></td><td><code>bdf0199154eb82ca</code></td></tr><tr><td><span class="el_class">kotlin.random.AbstractPlatformRandom</span></td><td><code>3a6bf9f9371b4acc</code></td></tr><tr><td><span class="el_class">kotlin.random.Random</span></td><td><code>b1587b27d3ea21cb</code></td></tr><tr><td><span class="el_class">kotlin.random.Random.Default</span></td><td><code>0d6745a8ab2d8e7a</code></td></tr><tr><td><span class="el_class">kotlin.random.jdk8.PlatformThreadLocalRandom</span></td><td><code>2671a146e229c10a</code></td></tr><tr><td><span class="el_class">kotlin.ranges.RangesKt___RangesKt</span></td><td><code>062a8a616468a458</code></td></tr><tr><td><span class="el_class">kotlin.sequences.FilteringSequence</span></td><td><code>5f7d79a9dc943651</code></td></tr><tr><td><span class="el_class">kotlin.sequences.FilteringSequence.iterator.1</span></td><td><code>74fe5d98a040a7c3</code></td></tr><tr><td><span class="el_class">kotlin.sequences.GeneratorSequence</span></td><td><code>8de8237dd9ad3e0e</code></td></tr><tr><td><span class="el_class">kotlin.sequences.GeneratorSequence.iterator.1</span></td><td><code>009482ae4d7d700a</code></td></tr><tr><td><span class="el_class">kotlin.sequences.SequencesKt__SequencesKt</span></td><td><code>7fa2ede7914ed2a8</code></td></tr><tr><td><span class="el_class">kotlin.sequences.SequencesKt__SequencesKt.generateSequence.2</span></td><td><code>c5bca26058e891ce</code></td></tr><tr><td><span class="el_class">kotlin.sequences.SequencesKt___SequencesKt</span></td><td><code>a6c11a98c469fa96</code></td></tr><tr><td><span class="el_class">kotlin.sequences.SequencesKt___SequencesKt.filterNotNull.1</span></td><td><code>ea53cedf87fada79</code></td></tr><tr><td><span class="el_class">kotlin.sequences.TransformingSequence</span></td><td><code>7217cee03aa76f41</code></td></tr><tr><td><span class="el_class">kotlin.sequences.TransformingSequence.iterator.1</span></td><td><code>7c69bd9350289138</code></td></tr><tr><td><span class="el_class">kotlin.test.AsserterLookupKt</span></td><td><code>f7653681e78757e6</code></td></tr><tr><td><span class="el_class">kotlin.test.AssertionsKt</span></td><td><code>1c6733d5163310fa</code></td></tr><tr><td><span class="el_class">kotlin.test.AssertionsKt__AssertionsKt</span></td><td><code>8b26784506aec786</code></td></tr><tr><td><span class="el_class">kotlin.test.junit.JUnitAsserter</span></td><td><code>50b40f307accd03d</code></td></tr><tr><td><span class="el_class">kotlin.test.junit.JUnitContributor</span></td><td><code>08cb899ef3fafa2e</code></td></tr><tr><td><span class="el_class">kotlin.text.StringsKt__StringsKt</span></td><td><code>86264981473a96e7</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.DebugKt</span></td><td><code>b104329b0b5b5647</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.channels.BufferOverflow</span></td><td><code>3874f406a3109940</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.flow.FlowKt</span></td><td><code>070a60105dd0be7c</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.flow.FlowKt__ShareKt</span></td><td><code>85509fcb347aba27</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.flow.ReadonlySharedFlow</span></td><td><code>a864b46e82d1af70</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.flow.ReadonlyStateFlow</span></td><td><code>416b3b192b97cd23</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.flow.SharedFlowImpl</span></td><td><code>52e7bfc5bb07469d</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.flow.SharedFlowKt</span></td><td><code>2d7d7c3153d57434</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.flow.StateFlowImpl</span></td><td><code>11d5710dd7c50b2f</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.flow.StateFlowKt</span></td><td><code>d39508959e72a50d</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.flow.internal.AbstractSharedFlow</span></td><td><code>d2aedad46197cc83</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.flow.internal.AbstractSharedFlowKt</span></td><td><code>b104d4b0947f89df</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.flow.internal.NullSurrogateKt</span></td><td><code>364c01ca2c25dfa6</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.internal.Symbol</span></td><td><code>0b5608634a4a487a</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.internal.SystemPropsKt</span></td><td><code>66070d0314619e9b</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.internal.SystemPropsKt__SystemPropsKt</span></td><td><code>d43dc58e511ec72d</code></td></tr><tr><td><span class="el_class">kotlinx.coroutines.internal.SystemPropsKt__SystemProps_commonKt</span></td><td><code>51bbe0ee0bd34faa</code></td></tr><tr><td><span class="el_class">libcore.icu.ICU</span></td><td><code>fa72b64761b0ca26</code></td></tr><tr><td><span class="el_class">libcore.io.IoUtils</span></td><td><code>575b71411846781c</code></td></tr><tr><td><span class="el_class">libcore.util.BasicLruCache</span></td><td><code>91567480d954b4e2</code></td></tr><tr><td><span class="el_class">libcore.util.EmptyArray</span></td><td><code>93281196b8becabf</code></td></tr><tr><td><span class="el_class">org.apache.commons.lang.StringUtils</span></td><td><code>9dd94cc65aafa7e1</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.ASN1Object</span></td><td><code>124a26178ef7a80f</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.ASN1ObjectIdentifier</span></td><td><code>db95bc70bd8c1b1d</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.ASN1ObjectIdentifier.1</span></td><td><code>0615bf1a1c4bbfaf</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.ASN1ObjectIdentifier.OidHandle</span></td><td><code>2fe57a2ce73aecbe</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.ASN1Primitive</span></td><td><code>3db88c5a0fe6b9eb</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.ASN1RelativeOID</span></td><td><code>06d32817d64902c5</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.ASN1RelativeOID.1</span></td><td><code>6916b410a417ea85</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.ASN1Tag</span></td><td><code>432faa6ea3d91555</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.ASN1Type</span></td><td><code>fc7c2cbfbd4a4747</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.ASN1UniversalType</span></td><td><code>2f1f9b3bd2378a99</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.OIDTokenizer</span></td><td><code>4e43b393b0c7f6ed</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.bc.BCObjectIdentifiers</span></td><td><code>97640703432f3e68</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers</span></td><td><code>75c948bb64975f1d</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.gm.GMObjectIdentifiers</span></td><td><code>fb777dd657a0cd41</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.nist.NISTObjectIdentifiers</span></td><td><code>ba33e146e53e33f4</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers</span></td><td><code>ea5064c1b0df284e</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.sec.SECObjectIdentifiers</span></td><td><code>9e94e8d85c6bf7b2</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers</span></td><td><code>3c4eaf1b3d3fc06b</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.ua.UAObjectIdentifiers</span></td><td><code>d5bc61d5e226d42e</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.x509.AlgorithmIdentifier</span></td><td><code>22587de02d39ee70</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.x509.X509ObjectIdentifiers</span></td><td><code>ce76b4c8f6b5343c</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.x9.X962Parameters</span></td><td><code>5f62bda50372d30d</code></td></tr><tr><td><span class="el_class">org.bouncycastle.asn1.x9.X9ObjectIdentifiers</span></td><td><code>85b5d3274b37acb9</code></td></tr><tr><td><span class="el_class">org.bouncycastle.crypto.CryptoServicesPermission</span></td><td><code>bd2a4d945c000732</code></td></tr><tr><td><span class="el_class">org.bouncycastle.crypto.CryptoServicesRegistrar</span></td><td><code>8858f199c7aa0810</code></td></tr><tr><td><span class="el_class">org.bouncycastle.crypto.CryptoServicesRegistrar.1</span></td><td><code>ab36c263ff487af1</code></td></tr><tr><td><span class="el_class">org.bouncycastle.crypto.CryptoServicesRegistrar.Property</span></td><td><code>58ee0b4645e19bce</code></td></tr><tr><td><span class="el_class">org.bouncycastle.crypto.CryptoServicesRegistrar.ThreadLocalSecureRandomProvider</span></td><td><code>4806a9287d62bb23</code></td></tr><tr><td><span class="el_class">org.bouncycastle.crypto.params.DHParameters</span></td><td><code>01090edbd0988c24</code></td></tr><tr><td><span class="el_class">org.bouncycastle.crypto.params.DHValidationParameters</span></td><td><code>821d49d592aa6e3c</code></td></tr><tr><td><span class="el_class">org.bouncycastle.crypto.params.DSAParameters</span></td><td><code>4e95299c8aa40e51</code></td></tr><tr><td><span class="el_class">org.bouncycastle.crypto.params.DSAValidationParameters</span></td><td><code>401d0136a0fab478</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.bsi.BSIObjectIdentifiers</span></td><td><code>5152d11d29f6c48b</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.cms.CMSObjectIdentifiers</span></td><td><code>5862cb4cd879a7ef</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.eac.EACObjectIdentifiers</span></td><td><code>fb6088622285e71a</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.edec.EdECObjectIdentifiers</span></td><td><code>d616346e4d966faf</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.gnu.GNUObjectIdentifiers</span></td><td><code>01aad03a5b3c5a7c</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.iana.IANAObjectIdentifiers</span></td><td><code>07aecca910b47073</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.isara.IsaraObjectIdentifiers</span></td><td><code>a2d98acf57b8a976</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.iso.ISOIECObjectIdentifiers</span></td><td><code>b95a0a3baddc63f0</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.kisa.KISAObjectIdentifiers</span></td><td><code>a54ffdfe8f84af3a</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.misc.MiscObjectIdentifiers</span></td><td><code>69f3a99c0950ab1b</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.nsri.NSRIObjectIdentifiers</span></td><td><code>705838b14a942702</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.ntt.NTTObjectIdentifiers</span></td><td><code>8b388892ed7be70b</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.oiw.OIWObjectIdentifiers</span></td><td><code>af7da9901eb0ebad</code></td></tr><tr><td><span class="el_class">org.bouncycastle.internal.asn1.rosstandart.RosstandartObjectIdentifiers</span></td><td><code>c19bd9b63c06278a</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.COMPOSITE</span></td><td><code>608339ef696ad2b6</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.COMPOSITE.CompositeKeyInfoConverter</span></td><td><code>7d9f024b134ee3d1</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.COMPOSITE.Mappings</span></td><td><code>2710e8ed1b29fa92</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.CompositeSignatures.Mappings</span></td><td><code>939f71f0370629ed</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.DH</span></td><td><code>bf787b0c7e486995</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.DH.Mappings</span></td><td><code>21d007a1762af8bb</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.DSA.Mappings</span></td><td><code>1b6503ce0c8f198f</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.DSTU4145.Mappings</span></td><td><code>97a277f13012c019</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.Dilithium.Mappings</span></td><td><code>6382bb7542def833</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.EC</span></td><td><code>18e9a61ae5ab86d5</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.EC.Mappings</span></td><td><code>07d7a792c5e27d7b</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.ECGOST.Mappings</span></td><td><code>e287ce434fd0bc8f</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.EXTERNAL</span></td><td><code>8eb171b7914f6d93</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.EXTERNAL.ExternalKeyInfoConverter</span></td><td><code>93b1146537aef928</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.EXTERNAL.Mappings</span></td><td><code>82294aa7834be166</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.EdEC.Mappings</span></td><td><code>c3935e8b3d96d016</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.ElGamal.Mappings</span></td><td><code>73aac56d1170474e</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.Falcon.Mappings</span></td><td><code>bc75b380a13a2f5c</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.GM.Mappings</span></td><td><code>3ef7d5c86dabc4bd</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.GOST.Mappings</span></td><td><code>489099cc19f2a530</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.IES.Mappings</span></td><td><code>a810cdd9579b1548</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.LMS.Mappings</span></td><td><code>74cde4d2c51f8cb8</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.NTRU.Mappings</span></td><td><code>efe652edf123039b</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.RSA</span></td><td><code>5df107437d18b937</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.RSA.Mappings</span></td><td><code>b03dc58e51e2265a</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.SPHINCSPlus.Mappings</span></td><td><code>7afda3dfc4da7325</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.X509.Mappings</span></td><td><code>7d22ae4ecf3c59ab</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.CompositeSignaturesConstants</span></td><td><code>0380fc5c16e2c20b</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.CompositeSignaturesConstants.CompositeName</span></td><td><code>6350a048381ebb74</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.KeyFactorySpi</span></td><td><code>87621eb5f677eaf1</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.dh.KeyFactorySpi</span></td><td><code>a98dbd39254fd366</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.dsa.DSAUtil</span></td><td><code>6d21f65978730f6b</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.dsa.KeyFactorySpi</span></td><td><code>ee1506503f1fac65</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.dstu.KeyFactorySpi</span></td><td><code>8fed904ba17785ec</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi</span></td><td><code>e87fd7cfecb5098e</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi.EC</span></td><td><code>14b1a9e5cf7ca3c2</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi.ECMQV</span></td><td><code>b59fefc1c7c800c4</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.ecgost.KeyFactorySpi</span></td><td><code>aa37d8bb6c9f3eb2</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.ecgost12.KeyFactorySpi</span></td><td><code>6378a29da82f9425</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi</span></td><td><code>e0c240e54b0cb235</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi.Ed25519</span></td><td><code>7846bfd2a840e049</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi.Ed448</span></td><td><code>859b53219d6b20c6</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi.X25519</span></td><td><code>1ec41e3169d046cc</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi.X448</span></td><td><code>5517b354a22d4161</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.elgamal.KeyFactorySpi</span></td><td><code>4b313913bd6b696d</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.gost.KeyFactorySpi</span></td><td><code>cbad1716616fbc9c</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyFactorySpi</span></td><td><code>35e2aa4ad3a94ed5</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi</span></td><td><code>5560105bb00c98f3</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.config.ProviderConfigurationPermission</span></td><td><code>a8fd8d009d6280bf</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.Blake2b.Mappings</span></td><td><code>dacce31fc3c785a8</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.Blake2s.Mappings</span></td><td><code>0ddcfb95256c713e</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.Blake3.Mappings</span></td><td><code>04bab964b04cfde0</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.DSTU7564.Mappings</span></td><td><code>33e3943deb470c17</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.DigestAlgorithmProvider</span></td><td><code>a261829991a2fb84</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.GOST3411.Mappings</span></td><td><code>d58b0d8252289c46</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.Haraka.Mappings</span></td><td><code>a5c6a81f91a32bb6</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.Keccak.Mappings</span></td><td><code>1574b04593f27f2b</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.MD2.Mappings</span></td><td><code>453bb023393966d9</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.MD4.Mappings</span></td><td><code>784aa398d9638322</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.MD5.Mappings</span></td><td><code>a2abaae652747881</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.RIPEMD128.Mappings</span></td><td><code>f1dfd38292fc9d1d</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.RIPEMD160.Mappings</span></td><td><code>b04c6393351c1591</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.RIPEMD256.Mappings</span></td><td><code>3b26a679d4e060bf</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.RIPEMD320.Mappings</span></td><td><code>252d9c029b601568</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.SHA1.Mappings</span></td><td><code>e1906f6edd7beb3f</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.SHA224.Mappings</span></td><td><code>1873b396687d9cad</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.SHA256.Mappings</span></td><td><code>7beaa94156022f20</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.SHA3.Mappings</span></td><td><code>b4a72acba36e6c0d</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.SHA384.Mappings</span></td><td><code>9859db346239f47a</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.SHA512.Mappings</span></td><td><code>094a0ffff745c084</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.SM3.Mappings</span></td><td><code>497fcd8f8683646e</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.Skein.Mappings</span></td><td><code>49a41e09dad69bac</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.Tiger.Mappings</span></td><td><code>13dcadc6d3270a6a</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.digest.Whirlpool.Mappings</span></td><td><code>fbdff085d5cd0b40</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.drbg.DRBG</span></td><td><code>20858221ce31f1eb</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.drbg.DRBG.Mappings</span></td><td><code>81e59cd4cb159678</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.drbg.EntropyDaemon</span></td><td><code>14f31e90a36d23c8</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.keystore.BC.Mappings</span></td><td><code>44157c252728b7ef</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.keystore.BCFKS.Mappings</span></td><td><code>e29bf2644c11d055</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.keystore.PKCS12.Mappings</span></td><td><code>af6af89ecd40771a</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.AES</span></td><td><code>8448ea2002f3395b</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.AES.Mappings</span></td><td><code>3bcdf3cf1414c708</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.ARC4.Mappings</span></td><td><code>b0ea03d39f27b812</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.ARIA.Mappings</span></td><td><code>bb24c6f5b31de995</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Blowfish.Mappings</span></td><td><code>43e3dc8377015aba</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.CAST5.Mappings</span></td><td><code>fc80cf21d5c9faa4</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.CAST6.Mappings</span></td><td><code>efccfa3af9e61509</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Camellia.Mappings</span></td><td><code>80d7fc27fb452231</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.ChaCha.Mappings</span></td><td><code>86190913bb3c2a6d</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.DES.Mappings</span></td><td><code>1d49c549d5247deb</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.DESede.Mappings</span></td><td><code>003fcd70358de401</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.DSTU7624.Mappings</span></td><td><code>5292bf7f437f78f3</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.GOST28147.Mappings</span></td><td><code>f39279e88146c287</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.GOST3412_2015.Mappings</span></td><td><code>e7cb720a4929e302</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Grain128.Mappings</span></td><td><code>898d71e4d547286e</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Grainv1.Mappings</span></td><td><code>9be47fcf481b2157</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.HC128.Mappings</span></td><td><code>8d6b810399b96fa0</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.HC256.Mappings</span></td><td><code>afb9dcd8074d9b50</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.IDEA.Mappings</span></td><td><code>531daba13f8d14e9</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Noekeon.Mappings</span></td><td><code>7841f8e20490900d</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.OpenSSLPBKDF.Mappings</span></td><td><code>df2475cff1a76c61</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF1.Mappings</span></td><td><code>663fafe2dcb440a8</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2.Mappings</span></td><td><code>40fb634b52980c5f</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12.Mappings</span></td><td><code>917271caa9bc13e9</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Poly1305.Mappings</span></td><td><code>9380e29d6a83f632</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.RC2.Mappings</span></td><td><code>2da739b5f11c09ef</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.RC5.Mappings</span></td><td><code>caf2404b3d9cd697</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.RC6.Mappings</span></td><td><code>d8ad01dedd0f4805</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Rijndael.Mappings</span></td><td><code>89991b4fe9a291cd</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.SCRYPT.Mappings</span></td><td><code>ff0c36afce183d86</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.SEED.Mappings</span></td><td><code>880a74823b2b61e5</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.SM4.Mappings</span></td><td><code>d4b511a012b89315</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Salsa20.Mappings</span></td><td><code>9a6b8a4cb34887f1</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Serpent.Mappings</span></td><td><code>7871f02d12efdfe1</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Shacal2.Mappings</span></td><td><code>87d55e35606da865</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.SipHash.Mappings</span></td><td><code>bc6fbc9e89286a1c</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.SipHash128.Mappings</span></td><td><code>7fca953a66850036</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Skipjack.Mappings</span></td><td><code>ea74bec3a51dd324</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.SymmetricAlgorithmProvider</span></td><td><code>d3d970cbdcad7a61</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.TEA.Mappings</span></td><td><code>995e05fd18844568</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.TLSKDF.Mappings</span></td><td><code>4afc14404d366a81</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Threefish.Mappings</span></td><td><code>3c258c98fe656510</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Twofish.Mappings</span></td><td><code>eba437cd93c685b8</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.VMPC.Mappings</span></td><td><code>a51373a34af7e856</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.VMPCKSA3.Mappings</span></td><td><code>a27062e01d1526d5</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.XSalsa20.Mappings</span></td><td><code>be2715240665ed39</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.XTEA.Mappings</span></td><td><code>c983416e87922889</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.Zuc.Mappings</span></td><td><code>41e0975cf9b9d07f</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.symmetric.util.ClassUtil</span></td><td><code>b6dac8882a3a1c85</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.util.AlgorithmProvider</span></td><td><code>6eb3689865362b95</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jcajce.provider.util.AsymmetricAlgorithmProvider</span></td><td><code>3ea64e9f58373a19</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jce.provider.BouncyCastleProvider</span></td><td><code>f2afd910ae332583</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jce.provider.BouncyCastleProvider.1</span></td><td><code>1abb56ad8d90ab1c</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jce.provider.BouncyCastleProvider.JcaCryptoService</span></td><td><code>9c39043aa47a17f1</code></td></tr><tr><td><span class="el_class">org.bouncycastle.jce.provider.BouncyCastleProviderConfiguration</span></td><td><code>5524eb65428b187c</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.asn1.PQCObjectIdentifiers</span></td><td><code>3474867b40540db4</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.bike.BIKEKeyFactorySpi</span></td><td><code>cf1f219a322dbe05</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.cmce.CMCEKeyFactorySpi</span></td><td><code>2cdb000b98e6ac80</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.dilithium.DilithiumKeyFactorySpi</span></td><td><code>28a3b9a98465069a</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.dilithium.DilithiumKeyFactorySpi.Base2</span></td><td><code>883af9ac0ad506fb</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.dilithium.DilithiumKeyFactorySpi.Base3</span></td><td><code>3cda194dbafdabe6</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.dilithium.DilithiumKeyFactorySpi.Base5</span></td><td><code>e6985b081a0e45aa</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.falcon.FalconKeyFactorySpi</span></td><td><code>872db75670e33191</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.falcon.FalconKeyFactorySpi.Falcon1024</span></td><td><code>7d82b2efc63d6bf5</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.falcon.FalconKeyFactorySpi.Falcon512</span></td><td><code>66f9432c25a01cbb</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.hqc.HQCKeyFactorySpi</span></td><td><code>392e294ee73f7f22</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.kyber.KyberKeyFactorySpi</span></td><td><code>aa800838935d23d5</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.lms.LMSKeyFactorySpi</span></td><td><code>c9304c34c7ac5285</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.newhope.NHKeyFactorySpi</span></td><td><code>557772a4b527ded2</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.ntru.NTRUKeyFactorySpi</span></td><td><code>68298d2f980959ce</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.picnic.PicnicKeyFactorySpi</span></td><td><code>fca3697ab59a41e6</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.sphincs.Sphincs256KeyFactorySpi</span></td><td><code>75f8d2628e574f62</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.sphincsplus.SPHINCSPlusKeyFactorySpi</span></td><td><code>a23920f0c31e9bba</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.util.BaseKeyFactorySpi</span></td><td><code>aee78be2fb9b92ba</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.xmss.XMSSKeyFactorySpi</span></td><td><code>153d031b395bb2ab</code></td></tr><tr><td><span class="el_class">org.bouncycastle.pqc.jcajce.provider.xmss.XMSSMTKeyFactorySpi</span></td><td><code>d83ca43b33fd9d80</code></td></tr><tr><td><span class="el_class">org.bouncycastle.util.Arrays</span></td><td><code>3673a284f48ee40d</code></td></tr><tr><td><span class="el_class">org.bouncycastle.util.Properties</span></td><td><code>585ea2913b64a521</code></td></tr><tr><td><span class="el_class">org.bouncycastle.util.Properties.1</span></td><td><code>c49fa2e6296af05a</code></td></tr><tr><td><span class="el_class">org.bouncycastle.util.Properties.2</span></td><td><code>1b24d51e07fe491f</code></td></tr><tr><td><span class="el_class">org.bouncycastle.util.Strings</span></td><td><code>6cb8fe377f97a8da</code></td></tr><tr><td><span class="el_class">org.bouncycastle.util.Strings.1</span></td><td><code>35d84f0d0ffe6677</code></td></tr><tr><td><span class="el_class">org.bouncycastle.util.encoders.Hex</span></td><td><code>fb83cf2d043c1867</code></td></tr><tr><td><span class="el_class">org.bouncycastle.util.encoders.HexEncoder</span></td><td><code>403141eb2f1ab190</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.AbstractTestDescriptor</span></td><td><code>b7d6764e5c2ed1e2</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.DefaultTestClassDescriptor</span></td><td><code>29a580f844a707e9</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.DefaultTestClassRunInfo</span></td><td><code>68a7e79b2914fd4d</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.DefaultTestDescriptor</span></td><td><code>33f0f28b81218a57</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.DefaultTestOutputEvent</span></td><td><code>8b3d72b91c24a69b</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.DefaultTestSuiteDescriptor</span></td><td><code>7ca2225e2fb0b4b2</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor</span></td><td><code>cce43c0b36c4880f</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.TestCompleteEvent</span></td><td><code>94a6da85674017e0</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.TestStartEvent</span></td><td><code>739a2bff9c36ddab</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.failure.DefaultThrowableToTestFailureMapper</span></td><td><code>98b3c6d95620e628</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.failure.TestFailureMapper</span></td><td><code>fad0361b08728e0d</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.failure.mappers.AssertErrorMapper</span></td><td><code>f8f52c2b08659a75</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.failure.mappers.AssertjMultipleAssertionsErrorMapper</span></td><td><code>6d9c88eceee97e47</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.failure.mappers.JUnitComparisonTestFailureMapper</span></td><td><code>1870ccedd70c62d3</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.failure.mappers.OpenTestAssertionFailedMapper</span></td><td><code>670c8d72a39d27d6</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.failure.mappers.OpenTestMultipleFailuresErrorMapper</span></td><td><code>fd9e46b889182617</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.filter.TestFilterSpec</span></td><td><code>a7526e6ebab295a4</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor</span></td><td><code>e052047f692cb949</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junit.JUnitSpec</span></td><td><code>05450dcebee7557f</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor</span></td><td><code>b0ec3f6d4134fe62</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor</span></td><td><code>f7f65915a8f2437a</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessorFactory</span></td><td><code>af7eba0c2d0672b7</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junit.JUnitTestEventAdapter</span></td><td><code>7631083e51b05644</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.junit.TestClassExecutionEventGenerator</span></td><td><code>85f7bf68770ddcb6</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.processors.CaptureTestOutputTestResultProcessor</span></td><td><code>e0ec4a50ce7a0011</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.redirector.DefaultStandardOutputRedirector</span></td><td><code>66011962fbed0a65</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.redirector.DefaultStandardOutputRedirector.DiscardAction</span></td><td><code>c8ea3545fa32c9b3</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.redirector.DefaultStandardOutputRedirector.WriteAction</span></td><td><code>77c2ee9a9fa842b1</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.redirector.JULRedirector</span></td><td><code>14551eb76b8ecae2</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.redirector.TestOutputRedirector</span></td><td><code>7ff936d162af4d8a</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.redirector.TestOutputRedirector.Forwarder</span></td><td><code>93ca0532f92cb2b9</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.results.AttachParentTestResultProcessor</span></td><td><code>6d02567fd2a7d62d</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer</span></td><td><code>86c8a2a7f444af17</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultNestedTestSuiteDescriptorSerializer</span></td><td><code>d06ce1b3d75f97ec</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultParameterizedTestDescriptorSerializer</span></td><td><code>110fe58b6a08d18a</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestClassDescriptorSerializer</span></td><td><code>7a33def0e5f77169</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestClassRunInfoSerializer</span></td><td><code>756d4261d461b736</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestDescriptorSerializer</span></td><td><code>f22763fb9799791b</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestFailureSerializer</span></td><td><code>a3fa0d4e2033ff7b</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestMethodDescriptorSerializer</span></td><td><code>8399fed70a5a5583</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestOutputEventSerializer</span></td><td><code>ab68b99e3ba8e6a7</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.DefaultTestSuiteDescriptorSerializer</span></td><td><code>00e4063cb0a3717e</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.IdSerializer</span></td><td><code>cdde38a9abcdd3c1</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.NullableSerializer</span></td><td><code>0b8b3e72f4fb326b</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.TestCompleteEventSerializer</span></td><td><code>971566bf8e6bbbc9</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.TestStartEventSerializer</span></td><td><code>46e7b262d38e1858</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestEventSerializer.WorkerTestSuiteDescriptorSerializer</span></td><td><code>e06ab7fe365be81b</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestWorker</span></td><td><code>b93df52c3074c532</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestWorker.1</span></td><td><code>b8314e777e355f7d</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestWorker.2</span></td><td><code>cc4e0ec7222faee6</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestWorker.3</span></td><td><code>030c348be1c106a4</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestWorker.State</span></td><td><code>903c35047a140ff9</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.TestWorker.TestFrameworkServiceRegistry</span></td><td><code>12a7a3db90dec4e3</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.WorkerTestClassProcessor</span></td><td><code>0f6525b02f2bb3d2</code></td></tr><tr><td><span class="el_class">org.gradle.api.internal.tasks.testing.worker.WorkerTestClassProcessor.WorkerTestSuiteDescriptor</span></td><td><code>b3807e9b92351840</code></td></tr><tr><td><span class="el_class">org.gradle.api.logging.LogLevel</span></td><td><code>236e938e30516638</code></td></tr><tr><td><span class="el_class">org.gradle.api.tasks.testing.TestOutputEvent.Destination</span></td><td><code>a16caef1c278a81f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.Cast</span></td><td><code>6130c81e08d81640</code></td></tr><tr><td><span class="el_class">org.gradle.internal.SystemProperties</span></td><td><code>f454284e0229cc37</code></td></tr><tr><td><span class="el_class">org.gradle.internal.actor.internal.DefaultActorFactory</span></td><td><code>43acc9e5b3a492ea</code></td></tr><tr><td><span class="el_class">org.gradle.internal.actor.internal.DefaultActorFactory.BlockingActor</span></td><td><code>e2e64c7c8141667f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.AbstractDelegatingExecutorService</span></td><td><code>49d3dededcea40d0</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.AbstractManagedExecutor</span></td><td><code>3e801af2d608b388</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.AbstractManagedExecutor.1</span></td><td><code>e617b5280c0b131e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.CompositeStoppable</span></td><td><code>4a36b916ba0a65be</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.CompositeStoppable.1</span></td><td><code>7991c35593ad107a</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.CompositeStoppable.3</span></td><td><code>e70f2f4c49f9854e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.DefaultExecutorFactory</span></td><td><code>63847aa635eddd82</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.DefaultExecutorFactory.TrackedManagedExecutor</span></td><td><code>36f4bc1cd93c039c</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.ExecutorPolicy.CatchAndRecordFailures</span></td><td><code>2aacf6d3d0dd2240</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.ManagedExecutorImpl</span></td><td><code>ce6f255f6fc1de83</code></td></tr><tr><td><span class="el_class">org.gradle.internal.concurrent.ThreadFactoryImpl</span></td><td><code>1d388becbfb01ad8</code></td></tr><tr><td><span class="el_class">org.gradle.internal.dispatch.ContextClassLoaderDispatch</span></td><td><code>132d0c3fd93e8141</code></td></tr><tr><td><span class="el_class">org.gradle.internal.dispatch.ContextClassLoaderProxy</span></td><td><code>d72ee515504b89e6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.dispatch.MethodInvocation</span></td><td><code>bbd5401404e52b1f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.dispatch.ProxyDispatchAdapter</span></td><td><code>67194db65692ab5d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.dispatch.ProxyDispatchAdapter.DispatchingInvocationHandler</span></td><td><code>82935bb9f2db6b85</code></td></tr><tr><td><span class="el_class">org.gradle.internal.dispatch.ReflectionDispatch</span></td><td><code>6976fdf67f3e8979</code></td></tr><tr><td><span class="el_class">org.gradle.internal.event.AbstractBroadcastDispatch</span></td><td><code>0f5ffe97fa60f855</code></td></tr><tr><td><span class="el_class">org.gradle.internal.event.BroadcastDispatch</span></td><td><code>971f57b98f410335</code></td></tr><tr><td><span class="el_class">org.gradle.internal.event.BroadcastDispatch.CompositeDispatch</span></td><td><code>5d8a079ebb58640f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.event.BroadcastDispatch.EmptyDispatch</span></td><td><code>136c24cb564bd0f5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.event.BroadcastDispatch.SingletonDispatch</span></td><td><code>66b75507cc7e3700</code></td></tr><tr><td><span class="el_class">org.gradle.internal.event.ListenerBroadcast</span></td><td><code>68e3a1fc76137d54</code></td></tr><tr><td><span class="el_class">org.gradle.internal.id.CompositeIdGenerator</span></td><td><code>f1c607aa5fccdbaa</code></td></tr><tr><td><span class="el_class">org.gradle.internal.id.CompositeIdGenerator.CompositeId</span></td><td><code>e710c854f802c58b</code></td></tr><tr><td><span class="el_class">org.gradle.internal.id.LongIdGenerator</span></td><td><code>6f8168bf486a560d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.id.UUIDGenerator</span></td><td><code>047a43ab94df6ffa</code></td></tr><tr><td><span class="el_class">org.gradle.internal.io.BufferCaster</span></td><td><code>88a8af829d9f2dca</code></td></tr><tr><td><span class="el_class">org.gradle.internal.io.LineBufferingOutputStream</span></td><td><code>6219fe05ee4c9468</code></td></tr><tr><td><span class="el_class">org.gradle.internal.io.LinePerThreadBufferingOutputStream</span></td><td><code>6663ead4c1825a46</code></td></tr><tr><td><span class="el_class">org.gradle.internal.io.NullOutputStream</span></td><td><code>eefcfe0665bbfe4c</code></td></tr><tr><td><span class="el_class">org.gradle.internal.io.StreamByteBuffer</span></td><td><code>e2c8064318ed213e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.io.StreamByteBuffer.StreamByteBufferChunk</span></td><td><code>601a3b84d114befa</code></td></tr><tr><td><span class="el_class">org.gradle.internal.io.StreamByteBuffer.StreamByteBufferInputStream</span></td><td><code>1ba4f1560d8a3753</code></td></tr><tr><td><span class="el_class">org.gradle.internal.io.StreamByteBuffer.StreamByteBufferOutputStream</span></td><td><code>9243acabfced691c</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.config.LoggingSystemAdapter</span></td><td><code>2bb5150ee66232e9</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.config.LoggingSystemAdapter.SnapshotImpl</span></td><td><code>221de860d84422df</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.console.DefaultUserInputReceiver</span></td><td><code>44c8536611e071b4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.EndOutputEvent</span></td><td><code>0d8edd2a5ce274ee</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.LogLevelChangeEvent</span></td><td><code>33b762c6d5852de7</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.OutputEvent</span></td><td><code>85bce87f1bcda18d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.OutputEventListener</span></td><td><code>e7d50a9306531b49</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.OutputEventListener.1</span></td><td><code>5c6014dff2070607</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.StyledTextOutputEvent</span></td><td><code>11f48fb1a17330c8</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.events.StyledTextOutputEvent.Span</span></td><td><code>c55f799d2631f13d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.serializer.LogEventSerializer</span></td><td><code>b6d88af223db296a</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.serializer.LogLevelChangeEventSerializer</span></td><td><code>f77a59533dde75ec</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.serializer.SpanSerializer</span></td><td><code>5f773b7d1ad07c9f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.serializer.StyledTextOutputEventSerializer</span></td><td><code>faebed27ac3e65ba</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.DefaultLoggingManager</span></td><td><code>61e216a064052ff1</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.DefaultLoggingManager.StartableLoggingRouter</span></td><td><code>78396be937af48de</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.DefaultLoggingManager.StartableLoggingSystem</span></td><td><code>b121a97021902643</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.DefaultLoggingManagerFactory</span></td><td><code>eb1ab97193f0d177</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.LoggingServiceRegistry</span></td><td><code>b54e061596ce61fc</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.LoggingServiceRegistry.1</span></td><td><code>b3c4addf0f9c5893</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.LoggingServiceRegistry.CommandLineLogging</span></td><td><code>ab0f0f2f9e415a5d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.services.TextStreamOutputEventListener</span></td><td><code>ef4d0c3267356598</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventListenerManager</span></td><td><code>d6dee3d6fea49020</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventListenerManager.1</span></td><td><code>1e218a705ff0ee7e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventRenderer</span></td><td><code>ad1cc4fc552ab292</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventRenderer.1</span></td><td><code>b94418b2e260aede</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventRenderer.2</span></td><td><code>a956801cd98ca633</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventRenderer.LazyListener</span></td><td><code>7ee882569b166e1e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventRenderer.SnapshotImpl</span></td><td><code>827634628a47c5f5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.sink.OutputEventTransformer</span></td><td><code>06c2270eef0e291e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.slf4j.BuildOperationAwareLogger</span></td><td><code>6a70f9123229323f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.slf4j.OutputEventListenerBackedLogger</span></td><td><code>30ddd0a8ff91b5f5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext</span></td><td><code>9d35d4b7a722eb08</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext.NoOpLogger</span></td><td><code>3868cc8d50014a37</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.slf4j.Slf4jLoggingConfigurer</span></td><td><code>75fba29c3739b15f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.DefaultStdErrLoggingSystem</span></td><td><code>fd3dd0caab2f1d95</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.DefaultStdOutLoggingSystem</span></td><td><code>528bb39bfb67c3ae</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.JavaUtilLoggingSystem</span></td><td><code>5e967b17aabfd442</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.JavaUtilLoggingSystem.SnapshotImpl</span></td><td><code>15dfc30250723749</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.PrintStreamLoggingSystem</span></td><td><code>1ae6e6b715c6b3f9</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.PrintStreamLoggingSystem.1</span></td><td><code>65643cb979acba64</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.PrintStreamLoggingSystem.OutputEventDestination</span></td><td><code>8c1ddf1476568828</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.PrintStreamLoggingSystem.PrintStreamDestination</span></td><td><code>9e7273f370028123</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.source.PrintStreamLoggingSystem.SnapshotImpl</span></td><td><code>8f80a46f9780a57e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.logging.text.StyledTextOutput.Style</span></td><td><code>d676557b62e3f601</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.filesystem.services.FileSystemServices</span></td><td><code>4556096f1c5a9c8e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.jansi.DefaultJansiRuntimeResolver</span></td><td><code>913dbea9c5665791</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.jansi.JansiBootPathConfigurer</span></td><td><code>3a766bce65ac1a48</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.jansi.JansiLibraryFactory</span></td><td><code>0cbaac430d6656c4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.jansi.JansiStorageLocator</span></td><td><code>c8bff1ccb071f9b6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.services.NativeServices</span></td><td><code>e9eace075b8c8a16</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.services.NativeServices.1</span></td><td><code>6882d4780ccaa810</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.services.NativeServices.NativeFeatures</span></td><td><code>70decf07458f8bcc</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.services.NativeServices.NativeFeatures.1</span></td><td><code>d779b50dcb640ca1</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.services.NativeServices.NativeFeatures.2</span></td><td><code>c75506e3562f5bfc</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.services.NativeServices.NativeServicesMode</span></td><td><code>32fb288ccd674693</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.services.NativeServices.NativeServicesMode.1</span></td><td><code>b08a5592f2ef59e9</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.services.NativeServices.NativeServicesMode.2</span></td><td><code>2d7b0e59d80896d0</code></td></tr><tr><td><span class="el_class">org.gradle.internal.nativeintegration.services.NativeServices.NativeServicesMode.3</span></td><td><code>768233bcc6732f74</code></td></tr><tr><td><span class="el_class">org.gradle.internal.reflect.JavaMethod</span></td><td><code>5541c31d24227b86</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.KryoBackedMessageSerializer</span></td><td><code>0028157720ec1f27</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.ConnectionSet</span></td><td><code>323708d9214e34e4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.ConnectionState</span></td><td><code>250fb1b274991d9a</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.DefaultMethodArgsSerializer</span></td><td><code>b5f4b38125033ffd</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.DefaultMethodArgsSerializer.ArraySerializer</span></td><td><code>16505d5ccbb1b78b</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.DefaultMethodArgsSerializer.EmptyArraySerializer</span></td><td><code>cdc53c79a631aa33</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.IncomingQueue</span></td><td><code>0e8ecdb8f31efe51</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.InterHubMessageSerializer</span></td><td><code>7d84d4aa85858c73</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.InterHubMessageSerializer.MessageReader</span></td><td><code>ab1cd6753eb75a29</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.InterHubMessageSerializer.MessageWriter</span></td><td><code>3e4611f758508afb</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.JavaSerializationBackedMethodArgsSerializer</span></td><td><code>4c7a738ee4525ff6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub</span></td><td><code>1326887a1f1da0ac</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub.ChannelDispatch</span></td><td><code>8a9dfd1b6306d8e6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub.ConnectionDispatch</span></td><td><code>df1d0a86180d66e4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub.ConnectionReceive</span></td><td><code>e1dc78071e8e957d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub.Discard</span></td><td><code>63a8d677cc1f9101</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub.Handler</span></td><td><code>3d232f51f2c02828</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHub.State</span></td><td><code>1b76747d7bce6b89</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHubBackedClient</span></td><td><code>77c2124c3c43d832</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection</span></td><td><code>c23964928f1aff22</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection.1</span></td><td><code>ac806a6bc6b1b21d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection.2</span></td><td><code>8ac38215966e3a20</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection.DispatchWrapper</span></td><td><code>9aa5d8679dbc6601</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MethodInvocationSerializer</span></td><td><code>47063ab293644e83</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MethodInvocationSerializer.MethodDetails</span></td><td><code>b6b7fb55e88cc4b9</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MethodInvocationSerializer.MethodInvocationReader</span></td><td><code>e6b939136f207ff5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.MethodInvocationSerializer.MethodInvocationWriter</span></td><td><code>c3b77db1b2556afe</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.OutgoingQueue</span></td><td><code>fbcc05506ad40c68</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.protocol.ChannelIdentifier</span></td><td><code>7697ff6a7c712869</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.protocol.ChannelMessage</span></td><td><code>9bff479666e58802</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.protocol.EndOfStream</span></td><td><code>f29ffed85365f7db</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.protocol.InterHubMessage</span></td><td><code>0c6e49b6ec077e16</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.protocol.InterHubMessage.Delivery</span></td><td><code>0652d09c2a7fd1ac</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.queue.EndPointQueue</span></td><td><code>8038a5636529123d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.queue.MultiChannelQueue</span></td><td><code>bcaac9c224068764</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.queue.MultiEndPointQueue</span></td><td><code>27222a892157733f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.queue.MultiEndPointQueue.1</span></td><td><code>44049b3edc682954</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.hub.queue.QueueInitializer</span></td><td><code>ad18361c23e679b1</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.MultiChoiceAddress</span></td><td><code>91381aa03cdd48e7</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.MultiChoiceAddressSerializer</span></td><td><code>7ffc395650705aaa</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketConnectCompletion</span></td><td><code>0da46ac4ccd1c9ce</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketConnection</span></td><td><code>b2e24cbbef327fb6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketConnection.1</span></td><td><code>1504f3fae897ccd8</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketConnection.SocketInputStream</span></td><td><code>2b93b10b91da561a</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketConnection.SocketOutputStream</span></td><td><code>7a65a0abc20061c4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketInetAddress</span></td><td><code>20cc3fd7992230e8</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.SocketInetAddress.Serializer</span></td><td><code>d42dd7f644e6367c</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.internal.inet.TcpOutgoingConnector</span></td><td><code>e658ec26090de909</code></td></tr><tr><td><span class="el_class">org.gradle.internal.remote.services.MessagingServices</span></td><td><code>371e97275eb35dc5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.AbstractCollectionSerializer</span></td><td><code>7897b7a9a0c39b1b</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.AbstractDecoder</span></td><td><code>6f331f65d3691839</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.AbstractEncoder</span></td><td><code>44ea8279ea7b3a07</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.AbstractSerializer</span></td><td><code>d5cd8744f99ef12d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory</span></td><td><code>83d030ef5f6c0526</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.BigDecimalSerializer</span></td><td><code>4dcd516a5e9202d8</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.BigIntegerSerializer</span></td><td><code>50f6ab963a855e2a</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.BooleanSerializer</span></td><td><code>9a343eeb20f2b7f4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.ByteArraySerializer</span></td><td><code>9566e41ef84566ae</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.ByteSerializer</span></td><td><code>85286889be7534cf</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.CharSerializer</span></td><td><code>6fba21fa805857ff</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.DoubleSerializer</span></td><td><code>085b687ded9be124</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.EnumSerializer</span></td><td><code>a314f7118f1d0412</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.FileSerializer</span></td><td><code>c43bc85ad47073ee</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.FloatSerializer</span></td><td><code>dad7a35798e49d9d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.IntegerSerializer</span></td><td><code>e8a55740afa66954</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.LongSerializer</span></td><td><code>3a08a2ef15abca0d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.PathSerializer</span></td><td><code>22894f3c1859ada1</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.ShortSerializer</span></td><td><code>5791e5a0a4ad1ece</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.StringMapSerializer</span></td><td><code>eb348217154fd0ed</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.StringSerializer</span></td><td><code>01576ecfb2720760</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.BaseSerializerFactory.ThrowableSerializer</span></td><td><code>ae463fe767977ceb</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.ClassLoaderObjectInputStream</span></td><td><code>81d9f3a2338180d3</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializer</span></td><td><code>9b7593104d5f803c</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry</span></td><td><code>84449bcf590c1af7</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.1</span></td><td><code>aeba2bb0cd2eab52</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.HierarchySerializerMatcher</span></td><td><code>c4fa93579434fd2b</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.InstanceBasedSerializerFactory</span></td><td><code>4d56c9c7fbddbcc0</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.SerializerClassMatcherStrategy</span></td><td><code>ea36ea8beff22743</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.StrictSerializerMatcher</span></td><td><code>6df6080c06573b93</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.TaggedTypeSerializer</span></td><td><code>264fbb605d976b35</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.DefaultSerializerRegistry.TypeInfo</span></td><td><code>bd6904d4ac5974ce</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.HashCodeSerializer</span></td><td><code>874be2a480b96af8</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.InputStreamBackedDecoder</span></td><td><code>1a43def6f05c6405</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.ListSerializer</span></td><td><code>bad970c0192233e9</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.kryo.KryoBackedDecoder</span></td><td><code>f9287092db21f40c</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.kryo.KryoBackedEncoder</span></td><td><code>e6a2be1dd138a272</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.kryo.TypeSafeSerializer</span></td><td><code>1dbc9e4c69fd1973</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.kryo.TypeSafeSerializer.1</span></td><td><code>bb88df969641a032</code></td></tr><tr><td><span class="el_class">org.gradle.internal.serialize.kryo.TypeSafeSerializer.2</span></td><td><code>599bac595545b9c0</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.AbstractServiceMethod</span></td><td><code>d8f9bf72435aa0d5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceAccessToken</span></td><td><code>552643647739457e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceMethodFactory</span></td><td><code>7cd5dc9e6187cc39</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry</span></td><td><code>f68ae7203f07c4d5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.1</span></td><td><code>a5957bd6a7e35017</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.ClassInspector</span></td><td><code>1c6a6d6c1cdffdbf</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.ClassInspector.ClassDetails</span></td><td><code>28d8b68c10eaba0e</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.CompositeServiceProvider</span></td><td><code>2097212676e37037</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.ConstructorService</span></td><td><code>2c11170a2e97afe8</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.FactoryMethodService</span></td><td><code>c94f704959a77ddb</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.FactoryService</span></td><td><code>5efa06cdad2305e5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.FixedInstanceService</span></td><td><code>adf12b7e82dfb3fd</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.ManagedObjectServiceProvider</span></td><td><code>00ae876b89fa7714</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.OwnServices</span></td><td><code>d7eed1a352f0d8e6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.ParentServices</span></td><td><code>ba013570aeebc2c6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.SingletonService</span></td><td><code>d319469c908bc1cf</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.SingletonService.1</span></td><td><code>cdfec069e7d8ab42</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.SingletonService.BindState</span></td><td><code>b653da4aa2ccd9df</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.State</span></td><td><code>76b519b0b74b53cb</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.DefaultServiceRegistry.ThisAsService</span></td><td><code>27c6f6b9bde39276</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.InjectUtil</span></td><td><code>4e32c5f95305147b</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.MethodHandleBasedServiceMethod</span></td><td><code>674037aa99129b52</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.MethodHandleBasedServiceMethodFactory</span></td><td><code>47e87df4713e4ce5</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.ReflectionBasedServiceMethod</span></td><td><code>56fdba7d8393253f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.RelevantMethods</span></td><td><code>ebb3efee7040ae62</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.RelevantMethods.RelevantMethodsBuilder</span></td><td><code>653e2ed3e283822f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.ServiceAccess</span></td><td><code>eae993853cb06bb6</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.ServiceAccess.1</span></td><td><code>c3b7931689739967</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.ServiceRegistryBuilder</span></td><td><code>73d1a49b155b6056</code></td></tr><tr><td><span class="el_class">org.gradle.internal.service.TypeStringFormatter</span></td><td><code>8ef195776e72517f</code></td></tr><tr><td><span class="el_class">org.gradle.internal.time.MonotonicClock</span></td><td><code>723fd7c85fffe54b</code></td></tr><tr><td><span class="el_class">org.gradle.internal.time.Time</span></td><td><code>118854647ab7eed4</code></td></tr><tr><td><span class="el_class">org.gradle.internal.time.TimeSource</span></td><td><code>79d456cc39bbde3d</code></td></tr><tr><td><span class="el_class">org.gradle.internal.time.TimeSource.1</span></td><td><code>4be788ff9e4278cd</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.WorkerLoggingSerializer</span></td><td><code>adae78bad8b0e727</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.ActionExecutionWorker</span></td><td><code>a7d30aba9c762788</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.ActionExecutionWorker.1</span></td><td><code>d0eba6bfe3f78d57</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.DefaultWorkerDirectoryProvider</span></td><td><code>10469cccf2e081cb</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker</span></td><td><code>d068f629bd86a048</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.2</span></td><td><code>6c72a17e07c7b1b9</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.ContextImpl</span></td><td><code>ceb41a6c2d98061a</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.PrintUnrecoverableErrorToFileHandler</span></td><td><code>e4f71133f397bb64</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.WorkerServices</span></td><td><code>186bde299ffe3d06</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.WorkerServices.1</span></td><td><code>69593c5a4d4ba8bb</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.child.WorkerLogEventListener</span></td><td><code>4a0b5fb708591833</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.messaging.WorkerConfig</span></td><td><code>8633f06980fb19fd</code></td></tr><tr><td><span class="el_class">org.gradle.process.internal.worker.messaging.WorkerConfigSerializer</span></td><td><code>b913cc847f396960</code></td></tr><tr><td><span class="el_class">org.gradle.util.internal.ArrayUtils</span></td><td><code>05a97ebb2e812055</code></td></tr><tr><td><span class="el_class">org.gradle.util.internal.CollectionUtils</span></td><td><code>9f70df10e2ea4351</code></td></tr><tr><td><span class="el_class">org.jcp.xml.dsig.internal.dom.XMLDSigRI</span></td><td><code>ac4223c3ae6e3bfb</code></td></tr><tr><td><span class="el_class">org.jcp.xml.dsig.internal.dom.XMLDSigRI.1</span></td><td><code>d1408cf0674b1821</code></td></tr><tr><td><span class="el_class">org.jcp.xml.dsig.internal.dom.XMLDSigRI.2</span></td><td><code>6ae05d6c0cf59f35</code></td></tr><tr><td><span class="el_class">org.jcp.xml.dsig.internal.dom.XMLDSigRI.ProviderService</span></td><td><code>1d1930d367db549d</code></td></tr><tr><td><span class="el_class">org.junit.Assert</span></td><td><code>eda6db924019425b</code></td></tr><tr><td><span class="el_class">org.junit.internal.Checks</span></td><td><code>5f543b0bb87b92da</code></td></tr><tr><td><span class="el_class">org.junit.internal.MethodSorter</span></td><td><code>a26607ae067f7352</code></td></tr><tr><td><span class="el_class">org.junit.internal.MethodSorter.1</span></td><td><code>d3997b4bdb7889c1</code></td></tr><tr><td><span class="el_class">org.junit.internal.MethodSorter.2</span></td><td><code>c8e6351cbf098013</code></td></tr><tr><td><span class="el_class">org.junit.internal.builders.AllDefaultPossibilitiesBuilder</span></td><td><code>4f18a1d7932cb8ab</code></td></tr><tr><td><span class="el_class">org.junit.internal.builders.AnnotatedBuilder</span></td><td><code>0faf353d180c9332</code></td></tr><tr><td><span class="el_class">org.junit.internal.builders.IgnoredBuilder</span></td><td><code>e152f333c53967a6</code></td></tr><tr><td><span class="el_class">org.junit.internal.builders.JUnit3Builder</span></td><td><code>4a2cc8e608e1275e</code></td></tr><tr><td><span class="el_class">org.junit.internal.builders.JUnit4Builder</span></td><td><code>f2e00a3e1fc23005</code></td></tr><tr><td><span class="el_class">org.junit.internal.builders.SuiteMethodBuilder</span></td><td><code>1df136431e07e393</code></td></tr><tr><td><span class="el_class">org.junit.internal.requests.ClassRequest</span></td><td><code>47dbc61675e5a92e</code></td></tr><tr><td><span class="el_class">org.junit.internal.requests.ClassRequest.CustomAllDefaultPossibilitiesBuilder</span></td><td><code>ea1c269d9656f543</code></td></tr><tr><td><span class="el_class">org.junit.internal.requests.ClassRequest.CustomSuiteMethodBuilder</span></td><td><code>03d01020b1c503c7</code></td></tr><tr><td><span class="el_class">org.junit.internal.requests.MemoizingRequest</span></td><td><code>1e70801476dbab8f</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.model.EachTestNotifier</span></td><td><code>077481995383e000</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.model.ReflectiveCallable</span></td><td><code>d591724635588bcb</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.rules.RuleMemberValidator</span></td><td><code>95b5ee2068ec6875</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.rules.RuleMemberValidator.Builder</span></td><td><code>f24845fa6fd065af</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.rules.RuleMemberValidator.DeclaringClassMustBePublic</span></td><td><code>1de994463c748d89</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.rules.RuleMemberValidator.FieldMustBeARule</span></td><td><code>e24e9f59de6fe5b7</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.rules.RuleMemberValidator.FieldMustBeATestRule</span></td><td><code>690823bd2992f52e</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.rules.RuleMemberValidator.MemberMustBeNonStaticOrAlsoClassRule</span></td><td><code>1e703fb3e7f4e533</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.rules.RuleMemberValidator.MemberMustBePublic</span></td><td><code>806c174eb921b478</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.rules.RuleMemberValidator.MemberMustBeStatic</span></td><td><code>ac28a03dd36b2b5a</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.rules.RuleMemberValidator.MethodMustBeARule</span></td><td><code>88ea4a2237de2b8b</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.rules.RuleMemberValidator.MethodMustBeATestRule</span></td><td><code>9f4dd18a26005c18</code></td></tr><tr><td><span class="el_class">org.junit.internal.runners.statements.InvokeMethod</span></td><td><code>05a7aa636afa2c39</code></td></tr><tr><td><span class="el_class">org.junit.runner.Description</span></td><td><code>1d6f7ddbbf223f9a</code></td></tr><tr><td><span class="el_class">org.junit.runner.Request</span></td><td><code>214d9ade1c7dc38d</code></td></tr><tr><td><span class="el_class">org.junit.runner.Runner</span></td><td><code>f5abacc70e2e08a4</code></td></tr><tr><td><span class="el_class">org.junit.runner.notification.RunListener</span></td><td><code>69d2c783b42f6720</code></td></tr><tr><td><span class="el_class">org.junit.runner.notification.RunNotifier</span></td><td><code>f6313076e2224ebb</code></td></tr><tr><td><span class="el_class">org.junit.runner.notification.RunNotifier.3</span></td><td><code>df2bada5cb3794f3</code></td></tr><tr><td><span class="el_class">org.junit.runner.notification.RunNotifier.4</span></td><td><code>fbdd84204c215de7</code></td></tr><tr><td><span class="el_class">org.junit.runner.notification.RunNotifier.5</span></td><td><code>f62dc396b601f8bd</code></td></tr><tr><td><span class="el_class">org.junit.runner.notification.RunNotifier.9</span></td><td><code>c3c3d54b8ed47ee1</code></td></tr><tr><td><span class="el_class">org.junit.runner.notification.RunNotifier.SafeNotifier</span></td><td><code>0b43c10299733bfb</code></td></tr><tr><td><span class="el_class">org.junit.runner.notification.SynchronizedRunListener</span></td><td><code>2b59d5cb3b105225</code></td></tr><tr><td><span class="el_class">org.junit.runners.BlockJUnit4ClassRunner</span></td><td><code>95752fb34ff12f3f</code></td></tr><tr><td><span class="el_class">org.junit.runners.BlockJUnit4ClassRunner.1</span></td><td><code>d0f63145230a5f42</code></td></tr><tr><td><span class="el_class">org.junit.runners.BlockJUnit4ClassRunner.2</span></td><td><code>f93eace695ddd30e</code></td></tr><tr><td><span class="el_class">org.junit.runners.BlockJUnit4ClassRunner.RuleCollector</span></td><td><code>9c768e710e39c989</code></td></tr><tr><td><span class="el_class">org.junit.runners.JUnit4</span></td><td><code>6d26e2305347fe01</code></td></tr><tr><td><span class="el_class">org.junit.runners.ParentRunner</span></td><td><code>335ee90b10f96ea1</code></td></tr><tr><td><span class="el_class">org.junit.runners.ParentRunner.1</span></td><td><code>ecc6961e8bc209c4</code></td></tr><tr><td><span class="el_class">org.junit.runners.ParentRunner.2</span></td><td><code>c5cb913a629ec4c8</code></td></tr><tr><td><span class="el_class">org.junit.runners.ParentRunner.3</span></td><td><code>20bad8188aebc0f2</code></td></tr><tr><td><span class="el_class">org.junit.runners.ParentRunner.4</span></td><td><code>80476dbdcb8d52cc</code></td></tr><tr><td><span class="el_class">org.junit.runners.ParentRunner.ClassRuleCollector</span></td><td><code>26f7fb338afcd13b</code></td></tr><tr><td><span class="el_class">org.junit.runners.RuleContainer</span></td><td><code>d44c3ba6dc65af53</code></td></tr><tr><td><span class="el_class">org.junit.runners.RuleContainer.1</span></td><td><code>57bbc73f6f47763b</code></td></tr><tr><td><span class="el_class">org.junit.runners.model.FrameworkMember</span></td><td><code>bfd059486f267475</code></td></tr><tr><td><span class="el_class">org.junit.runners.model.FrameworkMethod</span></td><td><code>f293b82d5aa86323</code></td></tr><tr><td><span class="el_class">org.junit.runners.model.FrameworkMethod.1</span></td><td><code>8fd5e02769c0e0c2</code></td></tr><tr><td><span class="el_class">org.junit.runners.model.RunnerBuilder</span></td><td><code>585cad2d320dc86e</code></td></tr><tr><td><span class="el_class">org.junit.runners.model.Statement</span></td><td><code>9a75aa5de27bf4d5</code></td></tr><tr><td><span class="el_class">org.junit.runners.model.TestClass</span></td><td><code>7e71209792391ee8</code></td></tr><tr><td><span class="el_class">org.junit.runners.model.TestClass.FieldComparator</span></td><td><code>1b96cd3d5c4aeb07</code></td></tr><tr><td><span class="el_class">org.junit.runners.model.TestClass.MethodComparator</span></td><td><code>0369eb29eb04248a</code></td></tr><tr><td><span class="el_class">org.junit.validator.AnnotationValidatorFactory</span></td><td><code>e1e5570798173ab9</code></td></tr><tr><td><span class="el_class">org.junit.validator.AnnotationsValidator</span></td><td><code>6cbe8454c9a93bb8</code></td></tr><tr><td><span class="el_class">org.junit.validator.AnnotationsValidator.AnnotatableValidator</span></td><td><code>d211a963f22be103</code></td></tr><tr><td><span class="el_class">org.junit.validator.AnnotationsValidator.ClassValidator</span></td><td><code>1b463c4e6642e880</code></td></tr><tr><td><span class="el_class">org.junit.validator.AnnotationsValidator.FieldValidator</span></td><td><code>64068b954dc56a31</code></td></tr><tr><td><span class="el_class">org.junit.validator.AnnotationsValidator.MethodValidator</span></td><td><code>f16b57f17c787036</code></td></tr><tr><td><span class="el_class">org.junit.validator.PublicClassValidator</span></td><td><code>3bac248cf06b18e4</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.AnnotationVisitor</span></td><td><code>c221a29c86238abe</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.AnnotationWriter</span></td><td><code>34e7798dfc2bd39e</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.Attribute</span></td><td><code>0e5819687398a67d</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.ByteVector</span></td><td><code>441f52bb91f2264a</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.ClassReader</span></td><td><code>67f0bd26041c2814</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.ClassVisitor</span></td><td><code>60ac8fe0a8637661</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.ClassWriter</span></td><td><code>7c218bcf0ddf4f36</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.Context</span></td><td><code>99175e260b053b6b</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.Edge</span></td><td><code>a7da72d0d5f98563</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.FieldVisitor</span></td><td><code>a71ca38cb18b8399</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.FieldWriter</span></td><td><code>cc55d81f38114b91</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.Frame</span></td><td><code>d6b26ac1eda906c0</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.Handle</span></td><td><code>6690d641af597551</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.Handler</span></td><td><code>b31836486578537a</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.Label</span></td><td><code>d077c57ddae8ff85</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.MethodVisitor</span></td><td><code>e4524a59fe75ca0a</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.MethodWriter</span></td><td><code>8ba24cee966e9838</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.Opcodes</span></td><td><code>440a962012da17eb</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.Symbol</span></td><td><code>ba773c21edde25dd</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.SymbolTable</span></td><td><code>30198454884593c9</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.SymbolTable.Entry</span></td><td><code>278ee8dbe43f3c1e</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.Type</span></td><td><code>443b3e228cf34d91</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.TypePath</span></td><td><code>abea40c97c146b10</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.commons.AnnotationRemapper</span></td><td><code>452aa8a4314fb1e5</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.commons.ClassRemapper</span></td><td><code>422c916bfc35f3e4</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.commons.FieldRemapper</span></td><td><code>3359fdab44ef6c58</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.commons.GeneratorAdapter</span></td><td><code>e87e174f69a188e8</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.commons.InstructionAdapter</span></td><td><code>df647a39a11cb5e6</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.commons.JSRInlinerAdapter</span></td><td><code>ed02d13f2e96cdc1</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.commons.LocalVariablesSorter</span></td><td><code>032960f4bc07d060</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.commons.Method</span></td><td><code>6ae35428c12e7119</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.commons.MethodRemapper</span></td><td><code>4967fc842ebcb5f4</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.commons.Remapper</span></td><td><code>ed2e34f09e074726</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.commons.SignatureRemapper</span></td><td><code>0640fbbfef6d849c</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.signature.SignatureReader</span></td><td><code>2aa0d48100c32883</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.signature.SignatureVisitor</span></td><td><code>cd20dd73d5d68fe7</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.signature.SignatureWriter</span></td><td><code>cc04c6f4f3915908</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.AbstractInsnNode</span></td><td><code>614a66d9dce7875e</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.AnnotationNode</span></td><td><code>aba0a6d639dfeb40</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.ClassNode</span></td><td><code>1008c3fcec31e4d5</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.FieldInsnNode</span></td><td><code>5700edc1730caec9</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.FieldNode</span></td><td><code>d98883de6d7f9960</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.FrameNode</span></td><td><code>7dbbb2a6e36810d1</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.IincInsnNode</span></td><td><code>9189dcb62a02d46b</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.InnerClassNode</span></td><td><code>c8c1cfe17375a5ba</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.InsnList</span></td><td><code>f8d12a1a44b5d669</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.InsnList.InsnListIterator</span></td><td><code>3643766185e102cb</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.InsnNode</span></td><td><code>749a3995df9d29c7</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.InvokeDynamicInsnNode</span></td><td><code>1768953775195431</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.JumpInsnNode</span></td><td><code>2219c1847477524b</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.LabelNode</span></td><td><code>91dba2061d9d21bb</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.LdcInsnNode</span></td><td><code>e90a70168050409f</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.LineNumberNode</span></td><td><code>bb11083798c7f7ec</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.LocalVariableNode</span></td><td><code>aa32558f3d4d0a3f</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.MethodInsnNode</span></td><td><code>d98e90ec2136cd5a</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.MethodNode</span></td><td><code>3bb4f2269b39c192</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.TryCatchBlockNode</span></td><td><code>f1ab2fe4aff12d40</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.TypeInsnNode</span></td><td><code>5d8dba4353ae213b</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.Util</span></td><td><code>25da9a95361c1643</code></td></tr><tr><td><span class="el_class">org.objectweb.asm.tree.VarInsnNode</span></td><td><code>7d26f0d3ac04c3e4</code></td></tr><tr><td><span class="el_class">org.robolectric.AndroidMetadata</span></td><td><code>a6ab1396eb4050a7</code></td></tr><tr><td><span class="el_class">org.robolectric.DefaultTestLifecycle</span></td><td><code>a217d54c38f0048c</code></td></tr><tr><td><span class="el_class">org.robolectric.MavenRoboSettings</span></td><td><code>281b45c7f348d3cc</code></td></tr><tr><td><span class="el_class">org.robolectric.Robolectric</span></td><td><code>4b6313d11054931e</code></td></tr><tr><td><span class="el_class">org.robolectric.RobolectricTestRunner</span></td><td><code>a945551cfb254747</code></td></tr><tr><td><span class="el_class">org.robolectric.RobolectricTestRunner.DeprecatedTestRunnerDefaultConfigProvider</span></td><td><code>287c1a7ca6572221</code></td></tr><tr><td><span class="el_class">org.robolectric.RobolectricTestRunner.HelperTestRunner</span></td><td><code>43191d85c7e7119a</code></td></tr><tr><td><span class="el_class">org.robolectric.RobolectricTestRunner.HelperTestRunner.1</span></td><td><code>92cb17023694b74c</code></td></tr><tr><td><span class="el_class">org.robolectric.RobolectricTestRunner.RobolectricFrameworkMethod</span></td><td><code>900d14905cc70581</code></td></tr><tr><td><span class="el_class">org.robolectric.RuntimeEnvironment</span></td><td><code>0158d4b25be4d215</code></td></tr><tr><td><span class="el_class">org.robolectric.Shadows</span></td><td><code>b26d7c70be9f1d92</code></td></tr><tr><td><span class="el_class">org.robolectric.android.AndroidSdkShadowMatcher</span></td><td><code>6dc65b26f4a12def</code></td></tr><tr><td><span class="el_class">org.robolectric.android.Bootstrap</span></td><td><code>9f12cd09d1f72d1f</code></td></tr><tr><td><span class="el_class">org.robolectric.android.DeviceConfig</span></td><td><code>2f631e902733fe36</code></td></tr><tr><td><span class="el_class">org.robolectric.android.DeviceConfig.ScreenSize</span></td><td><code>2ee4b7ccff0101bc</code></td></tr><tr><td><span class="el_class">org.robolectric.android.controller.ActivityController</span></td><td><code>5d202f9ad534d032</code></td></tr><tr><td><span class="el_class">org.robolectric.android.controller.ActivityController.1</span></td><td><code>bf8300426a8d3cbb</code></td></tr><tr><td><span class="el_class">org.robolectric.android.controller.ActivityController.LifecycleState</span></td><td><code>7fc98cf01a3a35ce</code></td></tr><tr><td><span class="el_class">org.robolectric.android.controller.ComponentController</span></td><td><code>d669f12ecf014afd</code></td></tr><tr><td><span class="el_class">org.robolectric.android.internal.AndroidTestEnvironment</span></td><td><code>22df83e65896327f</code></td></tr><tr><td><span class="el_class">org.robolectric.android.internal.LooperDelegatingScheduler</span></td><td><code>ffa48c49ce8aacf1</code></td></tr><tr><td><span class="el_class">org.robolectric.android.internal.RoboMonitoringInstrumentation</span></td><td><code>1ea78f749ad8e932</code></td></tr><tr><td><span class="el_class">org.robolectric.annotation.Config</span></td><td><code>07b069b15af92366</code></td></tr><tr><td><span class="el_class">org.robolectric.annotation.Config.Builder</span></td><td><code>171a8feebf1b434d</code></td></tr><tr><td><span class="el_class">org.robolectric.annotation.Config.Implementation</span></td><td><code>a97fe28988a8424b</code></td></tr><tr><td><span class="el_class">org.robolectric.annotation.ConscryptMode.Mode</span></td><td><code>39db7166c01a6039</code></td></tr><tr><td><span class="el_class">org.robolectric.annotation.GetInstallerPackageNameMode.Mode</span></td><td><code>cfe5c4b2992c8032</code></td></tr><tr><td><span class="el_class">org.robolectric.annotation.GraphicsMode.Mode</span></td><td><code>4ec2b383d8c5c24b</code></td></tr><tr><td><span class="el_class">org.robolectric.annotation.LooperMode.Mode</span></td><td><code>f67eb78083b6e7d9</code></td></tr><tr><td><span class="el_class">org.robolectric.annotation.ResourcesMode.Mode</span></td><td><code>82f8030a222a91db</code></td></tr><tr><td><span class="el_class">org.robolectric.annotation.SQLiteMode.Mode</span></td><td><code>11f1df0e2e988ffb</code></td></tr><tr><td><span class="el_class">org.robolectric.annotation.TextLayoutMode.Mode</span></td><td><code>b5ab034623c23697</code></td></tr><tr><td><span class="el_class">org.robolectric.annotation.experimental.LazyApplication.LazyLoad</span></td><td><code>d3bfeaec5a5ccd48</code></td></tr><tr><td><span class="el_class">org.robolectric.config.AndroidConfigurer</span></td><td><code>2a1f2a98c1f2b8a5</code></td></tr><tr><td><span class="el_class">org.robolectric.config.ConfigurationRegistry</span></td><td><code>ad0d2a8879fcc939</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors</span></td><td><code>e9f41d7796bb6b85</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.CleanerInterceptor</span></td><td><code>90e560532fe247bc</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.FileDescriptorInterceptor</span></td><td><code>da1abbf8758ae42e</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.LinkedHashMapEldestInterceptor</span></td><td><code>74f1edf29206b5cd</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.LocaleAdjustLanguageCodeInterceptor</span></td><td><code>fba059cd5e52fcee</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.NioUtilsFreeDirectBufferInterceptor</span></td><td><code>d9590ffd7cf2cfb6</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.NioUtilsUnsafeArrayInterceptor</span></td><td><code>6cdabac3262e51a8</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.NioUtilsUnsafeArrayOffsetInterceptor</span></td><td><code>8efd3836017ace13</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.NoOpInterceptor</span></td><td><code>b2d24543fc01c667</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.ReferenceRefersToInterceptor</span></td><td><code>f734d3a864d2577d</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.SocketInterceptor</span></td><td><code>4c50e2cc962d46da</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.SystemArrayCopyInterceptor</span></td><td><code>8cec1c139b86d6aa</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.SystemLogInterceptor</span></td><td><code>d374c74530d6ea34</code></td></tr><tr><td><span class="el_class">org.robolectric.interceptors.AndroidInterceptors.SystemTimeInterceptor</span></td><td><code>dccb64cb36ecff16</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.AndroidSandbox</span></td><td><code>952a619041bd4de1</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.AndroidSandbox.SdkSandboxClassLoader</span></td><td><code>cf50fbd392d43244</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.AndroidSandbox.TestEnvironmentSpec</span></td><td><code>ae0a99ba624eff0f</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.DefaultManifestFactory</span></td><td><code>4ee41937c18ed085</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.ManifestIdentifier</span></td><td><code>3e8dcb049c1a0348</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.SandboxManager</span></td><td><code>5d296eb94cbff6a9</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.SandboxManager.1</span></td><td><code>faf3dcfa2d8a4d11</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.SandboxManager.SandboxKey</span></td><td><code>9dac2ff373383408</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.SandboxTestRunner</span></td><td><code>1e758680d9d5edf0</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.SandboxTestRunner.1</span></td><td><code>000b9a0d2963b10d</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.SandboxTestRunner.2</span></td><td><code>bd2c5b615a2a8c5c</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.SandboxTestRunner.HelperTestRunner</span></td><td><code>81da13f118d33571</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ClassDetails</span></td><td><code>6ba452a769a0a866</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ClassDetails.AnnotationCollector</span></td><td><code>29c8ea3551a1dda8</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ClassInstrumentor</span></td><td><code>f3813e2da0530482</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ClassInstrumentor.1</span></td><td><code>a75dca25be1e5b14</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ClassInstrumentor.2</span></td><td><code>5eceec9e0ed70b17</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ClassNodeProvider</span></td><td><code>b283b100216c3229</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ClassValueMap</span></td><td><code>4454b818de409ac0</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.InstrumentationConfiguration</span></td><td><code>de0cbb8feffccad2</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.InstrumentationConfiguration.Builder</span></td><td><code>c71094cd878c5c0a</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.InstrumentingClassWriter</span></td><td><code>f2ed09bcae2cc8b6</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.Interceptor</span></td><td><code>f4a007cf988dfc6c</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.Interceptors</span></td><td><code>4c58c68ef322da6e</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.InvokeDynamicSupport</span></td><td><code>ad3cdcfb5082d950</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.MethodCallSite</span></td><td><code>f6274af6acee9a98</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.MethodCallSite.Kind</span></td><td><code>3a2051844356c7e2</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.MethodRef</span></td><td><code>d324b6a229502f29</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.MutableClass</span></td><td><code>e2d2d06316ceaca6</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ProxyMaker</span></td><td><code>b6aca79f4bcc656f</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ProxyMaker.1</span></td><td><code>04f1185fe7ff57aa</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.RoboCallSite</span></td><td><code>a307e350a54daa22</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.RobolectricGeneratorAdapter</span></td><td><code>6af533a08fe30d0f</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.RobolectricInternals</span></td><td><code>3ea01c33ebefa92c</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.Sandbox</span></td><td><code>79803b3f496b3ef3</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.SandboxClassLoader</span></td><td><code>623ee2d2641170b9</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.SandboxClassLoader.1</span></td><td><code>ca84bdc4353a290e</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ShadowDecorator</span></td><td><code>b5ae07ed49ae1cb3</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ShadowImpl</span></td><td><code>816fe41b20a54e0d</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ShadowInfo</span></td><td><code>5dd03a4b5643d72e</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ShadowInvalidator</span></td><td><code>4922b85bd0cfa0a9</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ShadowMap</span></td><td><code>52142b1a39c54d78</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ShadowMap.Builder</span></td><td><code>c9b83a895937c875</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ShadowProviders</span></td><td><code>70d95c94fc5008d6</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ShadowWrangler</span></td><td><code>529dfece004c604d</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ShadowWrangler.1</span></td><td><code>3bb2a523a6e30e04</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ShadowWrangler.2</span></td><td><code>ac876d1b04d01e6f</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ShadowWrangler.3</span></td><td><code>d0690c29e4720673</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.ShadowWrangler.ShadowMetadata</span></td><td><code>faae263e8d94338e</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.TypeMapper</span></td><td><code>c8fea762134c2a24</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.bytecode.UrlResourceProvider</span></td><td><code>e203071226230b0d</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.dependency.DependencyJar</span></td><td><code>5956a0ba41c97a2f</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.dependency.MavenArtifactFetcher</span></td><td><code>67af4635519e09b5</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.dependency.MavenDependencyResolver</span></td><td><code>fbab4ee3206bbb21</code></td></tr><tr><td><span class="el_class">org.robolectric.internal.dependency.MavenJarArtifact</span></td><td><code>ec39695c5920325a</code></td></tr><tr><td><span class="el_class">org.robolectric.manifest.ActivityData</span></td><td><code>206ab3090d7d8acc</code></td></tr><tr><td><span class="el_class">org.robolectric.manifest.AndroidManifest</span></td><td><code>94a54cae647d74f6</code></td></tr><tr><td><span class="el_class">org.robolectric.manifest.BroadcastReceiverData</span></td><td><code>9533554a1acca43d</code></td></tr><tr><td><span class="el_class">org.robolectric.manifest.ContentProviderData</span></td><td><code>58c6772fd0d28a1d</code></td></tr><tr><td><span class="el_class">org.robolectric.manifest.IntentFilterData</span></td><td><code>8fad7d57f136f922</code></td></tr><tr><td><span class="el_class">org.robolectric.manifest.MetaData</span></td><td><code>d792062046e7381c</code></td></tr><tr><td><span class="el_class">org.robolectric.manifest.MetaData.VALUE_TYPE</span></td><td><code>31ae4c72bb4f9ea1</code></td></tr><tr><td><span class="el_class">org.robolectric.manifest.PackageItemData</span></td><td><code>bb7bcb549412607f</code></td></tr><tr><td><span class="el_class">org.robolectric.manifest.PermissionItemData</span></td><td><code>ac2fe082514ffeb5</code></td></tr><tr><td><span class="el_class">org.robolectric.pluginapi.Sdk</span></td><td><code>7cd38d229845ecc7</code></td></tr><tr><td><span class="el_class">org.robolectric.pluginapi.perf.Metric</span></td><td><code>1b79742eadab9321</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.ConfigConfigurer</span></td><td><code>c2ce2e381de33f41</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.ConscryptModeConfigurer</span></td><td><code>260cc4ce83d941f3</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.DefaultSdkPicker</span></td><td><code>5991f9ced7de7837</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.DefaultSdkProvider</span></td><td><code>ca84a3e070b42ee5</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.DefaultSdkProvider.DefaultSdk</span></td><td><code>da3d92aa1f20b9ba</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.GetInstallerPackageNameModeConfigurer</span></td><td><code>fda4dafd1eb80914</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.GraphicsModeConfigurer</span></td><td><code>7b7e4b7f99943029</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.HierarchicalConfigurationStrategy</span></td><td><code>402f6f22450a75e4</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.HierarchicalConfigurationStrategy.1</span></td><td><code>7f48389554ac2592</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.HierarchicalConfigurationStrategy.ConfigurationImpl</span></td><td><code>bce82754617e0766</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.HierarchicalConfigurationStrategy.Counter</span></td><td><code>22891d7e578fba91</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.LazyApplicationConfigurer</span></td><td><code>6329276ac081f157</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.LegacyDependencyResolver</span></td><td><code>2829cfff64ddd82b</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.LegacyDependencyResolver.MaybeAClassLoader</span></td><td><code>b157454297bcec7a</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.LooperModeConfigurer</span></td><td><code>37400f1fab01a0e1</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.PackagePropertiesLoader</span></td><td><code>db09b41abdf50431</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.PackagePropertiesLoader.1</span></td><td><code>3c70d106eafde61e</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.ResourcesModeConfigurer</span></td><td><code>1fcb38560b40e555</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.SQLiteModeConfigurer</span></td><td><code>bfad1a8259fc6cde</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.SdkCollection</span></td><td><code>5375e4b4b363275d</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.TextLayoutModeConfigurer</span></td><td><code>9dafbc89c6099b2a</code></td></tr><tr><td><span class="el_class">org.robolectric.plugins.config.SingleValueConfigurer</span></td><td><code>7e6e48e5b5c8fd7f</code></td></tr><tr><td><span class="el_class">org.robolectric.res.Fs</span></td><td><code>a9bbff2a8d9b97dd</code></td></tr><tr><td><span class="el_class">org.robolectric.res.Qualifiers</span></td><td><code>f84d197864a18976</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.Asset</span></td><td><code>a4ace589566b8d41</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.Asset.AccessMode</span></td><td><code>e3d42928fb644cd5</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.Asset._CompressedAsset</span></td><td><code>a5746e3feb7ba439</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.Asset._FileAsset</span></td><td><code>22e6169b19722615</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.AttributeResolution</span></td><td><code>629a06af083b011c</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.AttributeResolution.BagAttributeFinder</span></td><td><code>4a3f01501d8dfbe0</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.AttributeResolution.XmlAttributeFinder</span></td><td><code>da6cc1c75bd2e649</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ByteBucketArray</span></td><td><code>58fea149e30115f3</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.CppAssetManager</span></td><td><code>f95c7a884b0105b7</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.CppAssetManager.FileType</span></td><td><code>ea67ebdbe8680111</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.CppAssetManager.SharedZip</span></td><td><code>7b1a1a21f2a7524f</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.CppAssetManager.ZipSet</span></td><td><code>b6bf1bdd703a02e0</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.CppAssetManager.asset_path</span></td><td><code>26c7b4affa24d8bb</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.DataType</span></td><td><code>a48548726ea56c2c</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.DynamicRefTable</span></td><td><code>cc052b3e9f9cc6dd</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.DynamicRefTable.1</span></td><td><code>a6ebefedee1a92f6</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.FileMap</span></td><td><code>f4dc89c59332e417</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.IdmapEntries</span></td><td><code>e4a38fec7dca7173</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.LocaleData</span></td><td><code>5ae9e289e06c8d66</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.LocaleDataTables</span></td><td><code>af804a136e8592a4</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.NativeObjRegistry</span></td><td><code>8eb81366a4b114a0</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.Ref</span></td><td><code>b9e22aa63e6f36f7</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.Registries</span></td><td><code>5b80e3edcc38c15a</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResStringPool</span></td><td><code>e33770a6f15846e0</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResStringPool.IntArray</span></td><td><code>1ff212e295211657</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable</span></td><td><code>8cf71f8cf5748b19</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable.Entry</span></td><td><code>5e28a5fe17dbac95</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable.Header</span></td><td><code>f5cd76a204a3abae</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable.PackageGroup</span></td><td><code>b958f10d88c1e0db</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable.PackageGroup.1</span></td><td><code>f0db99fb44438a8e</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable.ResTablePackage</span></td><td><code>ccd1645389d4ed2e</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable.ResourceName</span></td><td><code>0ad795e6ce5e617c</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable.Type</span></td><td><code>365ebb002ce6462c</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable.TypeCacheEntry</span></td><td><code>46cf5d34ca433ecc</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable.bag_entry</span></td><td><code>17db353db71c7f5f</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable.bag_set</span></td><td><code>92c2927496e4db74</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTableTheme</span></td><td><code>66a7c305b781cd4c</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTableTheme.AppliedStyle</span></td><td><code>dae6308fbf192ff5</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTableTheme.package_info</span></td><td><code>08279bbcbce2e5ae</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTableTheme.theme_entry</span></td><td><code>500f7a7bdf0a194c</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTableTheme.type_info</span></td><td><code>75385aa071d2809e</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable_config</span></td><td><code>5be08bcf78d3e91d</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable_config.LocaleParserState</span></td><td><code>6b64962b1532fddb</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable_config.State</span></td><td><code>4d1babc883eaa319</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResTable_config.UnicodeState</span></td><td><code>e2a376b6274e3088</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResXMLParser</span></td><td><code>6f0a7429d1f0a542</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResXMLTree</span></td><td><code>a06738a305166dcf</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResXMLTree.XmlBuffer</span></td><td><code>43d8cce9956b1d04</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceString</span></td><td><code>caee483aee53efda</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceString.Type</span></td><td><code>2f2961da17fcab82</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes</span></td><td><code>06337690aaac8051</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResChunk_header</span></td><td><code>768f765b5c0fb630</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResStringPool_header</span></td><td><code>6f3039f64cbbba7e</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResStringPool_ref</span></td><td><code>997261a0f3a37a0b</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResStringPool_span</span></td><td><code>f728c779846a72fb</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResTable_entry</span></td><td><code>56322c057e98aac7</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResTable_header</span></td><td><code>4e8c07c2e0432386</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResTable_map</span></td><td><code>63e40f587e2c1959</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResTable_map_entry</span></td><td><code>e5ae0e627223ab1b</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResTable_package</span></td><td><code>45dc8a9267ee87a6</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResTable_ref</span></td><td><code>60a8673a3ec5267f</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResTable_type</span></td><td><code>c4e26e4149f8dbdd</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResTable_typeSpec</span></td><td><code>75ca9b02471632fc</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResXMLTree_attrExt</span></td><td><code>50a443e13fe67971</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResXMLTree_attribute</span></td><td><code>17445bd09c255d12</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResXMLTree_endElementExt</span></td><td><code>3399957e54c519f9</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResXMLTree_header</span></td><td><code>dbe8f83fe6cc6234</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.ResXMLTree_node</span></td><td><code>15f946bed4b1380c</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.Res_value</span></td><td><code>3a9d7610a8bf0730</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ResourceTypes.WithOffset</span></td><td><code>916b864bec0e112e</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.String8</span></td><td><code>75a92d806d234aec</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.StringPoolRef</span></td><td><code>12d974e742578d5a</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.Util</span></td><td><code>6fc6e1674f91c795</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ZipArchiveHandle</span></td><td><code>4d512f7bacdad86b</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ZipFileRO</span></td><td><code>22223ed07252b600</code></td></tr><tr><td><span class="el_class">org.robolectric.res.android.ZipFileRO.ZipEntryRO</span></td><td><code>0e0603c53866f0a7</code></td></tr><tr><td><span class="el_class">org.robolectric.sandbox.AlwaysTrueShadowMatcher</span></td><td><code>758394b3f8992a6b</code></td></tr><tr><td><span class="el_class">org.robolectric.sandbox.ShadowMatcher</span></td><td><code>fc7a03cc8d907604</code></td></tr><tr><td><span class="el_class">org.robolectric.shadow.api.Shadow</span></td><td><code>ce6017f8415a98af</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.AutoValue_ImageUtil_RobolectricBufferedImage</span></td><td><code>bac3f45d039f6205</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.GraphicsShadowPicker</span></td><td><code>0a837b8f2e9226b3</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.IBluetoothManagerDelegates</span></td><td><code>b2f6de4f11533cb9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.IBluetoothManagerDelegates.IBluetoothManagerDelegateBase</span></td><td><code>97728e851d553232</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.IBluetoothManagerDelegates.IBluetoothManagerDelegateS</span></td><td><code>7129023ae33f0afa</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ImageUtil</span></td><td><code>66446c9bc20acb2f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ImageUtil.RobolectricBufferedImage</span></td><td><code>17ed11278996a886</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.LauncherAppsDelegate</span></td><td><code>4da5948cd3ca138a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.LooperShadowPicker</span></td><td><code>c7e85bf075a733ff</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.LooperShadowPicker.1</span></td><td><code>640641296d49065e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.NativeBitSet64</span></td><td><code>557f769ff0bd7f46</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.NativeInput.AInputEvent</span></td><td><code>5e92abff72483d4c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.NativeInput.InputEvent</span></td><td><code>a78b9aba772f0deb</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.NativeInput.MotionEvent</span></td><td><code>4aa898ff1d2729ed</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.NativeInput.PointerCoords</span></td><td><code>da3122343c707aed</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ResourceModeShadowPicker</span></td><td><code>2b7a4a73fbe7c0f5</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAccessibilityManager</span></td><td><code>0be9d4702912dabb</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAccessibilityManager.MyHandler</span></td><td><code>751c8b56d76b0cba</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAccessibilityNodeInfo</span></td><td><code>26f296b81b51f1ff</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAccountManager</span></td><td><code>833b6fcc94e4716c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowActivity</span></td><td><code>f65c99c0270d6df7</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowActivity.DirectActivityReflector..Reflector15</span></td><td><code>f89cabca82daf6af</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowActivity.DirectActivityReflector..Reflector15</span></td><td><code>870708c82ba099fd</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowActivityManager</span></td><td><code>7b41d96aa4f2377d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowActivityManagerNative</span></td><td><code>5839e6d3e0227354</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowActivityThread</span></td><td><code>cca3d0c354257e27</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowActivityThread.1</span></td><td><code>f0109bedb84835cf</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowActivityThread.ActivityClientRecordReflector..Reflector14</span></td><td><code>7afe72502889b54f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowActivityThread.ActivityClientRecordReflector..Reflector14</span></td><td><code>27a63f8f28d2ebdf</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowActivityThread._ActivityThread_..Reflector3</span></td><td><code>907b5cdeb2d61075</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowActivityThread._AppBindData_..Reflector9</span></td><td><code>533d8e4d06a59a8d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowActivityThread._AppBindData_..Reflector9</span></td><td><code>5f7ef1ddac836cd8</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAlarmManager</span></td><td><code>bd2be14f388dd43f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAlertDialog</span></td><td><code>ee97a4241c2a2ffb</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAppOpsManager</span></td><td><code>c02b1a952a4d2326</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAppWidgetManager</span></td><td><code>19c501eda8326319</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowApplication</span></td><td><code>64c941c58e7f9d55</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowApplication.Wrapper</span></td><td><code>28c0670e0ff25b52</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowApplicationPackageManager</span></td><td><code>1a2f5a9c9087ce11</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowApplicationPackageManager.ReflectorApplicationPackageManager..Reflector13</span></td><td><code>6a9479050602bc1b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowApplicationPackageManager.ReflectorApplicationPackageManager..Reflector13</span></td><td><code>d1fe27bc6c2ce779</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowArscAssetInputStream</span></td><td><code>af220652cdc2dc8b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowArscAssetInputStream._AssetInputStream_..Reflector24</span></td><td><code>b465f2347efe0802</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowArscAssetInputStream._AssetInputStream_..Reflector24</span></td><td><code>88e314e83131514f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowArscAssetManager</span></td><td><code>a812d78bafa6b74b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAssetInputStream</span></td><td><code>5dbefe0aec078457</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAssetInputStream.Picker</span></td><td><code>732c25d69977371f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAssetManager</span></td><td><code>d636489dd95fc0d1</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAssetManager.ArscBase</span></td><td><code>1c26efd5d9b06c15</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAssetManager.Picker</span></td><td><code>bbc46554bb638004</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAssetManager._AssetManager_..Reflector35</span></td><td><code>ee5dc1e142993e62</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAssetManager._AssetManager_..Reflector35</span></td><td><code>524a079c7d6f8604</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAudioEffect</span></td><td><code>414959c1a2cb4540</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAudioManager</span></td><td><code>1bdcf8d840bfdb01</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAudioRecord</span></td><td><code>83bacbdc0c611ab4</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAudioRecord.1</span></td><td><code>d2cc227972e4ad92</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAudioSystem</span></td><td><code>9f321646982802da</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowAudioTrack</span></td><td><code>1c5a7da614bf810b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBackgroundThread</span></td><td><code>321e88d1d03b7548</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBackgroundThread._BackgroundThread_..Reflector36</span></td><td><code>e66aa9a57e087995</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBackgroundThread._BackgroundThread_..Reflector36</span></td><td><code>8fc25fb65775b99e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBackupManager</span></td><td><code>6b7a875e3d1805e6</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBackupManager.BackupManagerServiceState</span></td><td><code>b69168191d2979bb</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBaseStringBlock</span></td><td><code>21930965094113be</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBaseStringBlock.Picker</span></td><td><code>f047d13b7651c0b9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBaseXmlBlock</span></td><td><code>73a0a5378e1a23ff</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBaseXmlBlock.Picker</span></td><td><code>fa0d9e6d46ea02b9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBatteryManager</span></td><td><code>a5aae60390ac7a7c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBinder</span></td><td><code>56b0cb1adade9335</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBitmap</span></td><td><code>8680698d80f1cba5</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBitmap.Picker</span></td><td><code>0427d96a8c354191</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBitmapDrawable</span></td><td><code>79f918b72f5a1868</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBitmapFactory</span></td><td><code>0374dee3822f5dc7</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBitmapFactory.BitmapFactoryReflector..Reflector23</span></td><td><code>33e807db95165465</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBluetoothAdapter</span></td><td><code>eec8c924d83fc98a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBluetoothAdapter.BluetoothAdapterReflector..Reflector37</span></td><td><code>00172ddadd38c0fd</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBluetoothAdapter.BluetoothAdapterReflector..Reflector37</span></td><td><code>5070387a406d20b7</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBluetoothDevice</span></td><td><code>bac2d2234013199a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBluetoothManager</span></td><td><code>8cf30315dacce941</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBroadcastReceiver</span></td><td><code>acd3ae10601bdba8</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBuild</span></td><td><code>9c496dbf573f5251</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBuild._Build_..Reflector38</span></td><td><code>e6ca13736741d11f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBuild._Build_..Reflector38</span></td><td><code>46b309a0f95c78d4</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowBuild._VERSION_..Reflector39</span></td><td><code>2d97bf8901e27227</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCallLogCalls</span></td><td><code>0829fffdff210b91</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCamcorderProfile</span></td><td><code>9b086229c9b0a70a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCamera</span></td><td><code>753de9be6bbd434a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCameraManager</span></td><td><code>a6a1f49ca749c10b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCanvas</span></td><td><code>e832f835cc8a4b5d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCanvas.Picker</span></td><td><code>f4ff657144aa192b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCardEmulation</span></td><td><code>e40a1895a27427d7</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCardEmulation.CardEmulationReflector..Reflector40</span></td><td><code>f07b34baeecabe2b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCardEmulation.CardEmulationReflector..Reflector40</span></td><td><code>62848d1278600b77</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowChoreographer</span></td><td><code>45c3fd722bd16061</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowChoreographer.CallbackQueueReflector..Reflector44</span></td><td><code>4a94baacf7a3a0b9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowChoreographer.ChoreographerReflector..Reflector30</span></td><td><code>d626f4bba02b811e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowChoreographer.ChoreographerReflector..Reflector30</span></td><td><code>dc6963436159f635</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowChoreographer.Picker</span></td><td><code>7a3a2812d0d66229</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowClipboardManager</span></td><td><code>9737224c5b1205bd</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCloseGuard</span></td><td><code>a4bbd6dadd3d4c9a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCloseGuard.CloseGuardReflector..Reflector28</span></td><td><code>e54efce2b3a74cc6</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCloseGuard.CloseGuardReflector..Reflector28</span></td><td><code>05cd08598c0f9a8e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowConnectivityManager</span></td><td><code>a8b3c567159c390d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowContentResolver</span></td><td><code>29a6aca39bc2d48f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowContextImpl</span></td><td><code>80081734fb8fb91e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowContextImpl._ContextImpl_..Reflector5</span></td><td><code>897dd7e1c88ae4a2</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowContextImpl._ContextImpl_..Reflector5</span></td><td><code>0e829438880e2fa7</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowContextThemeWrapper</span></td><td><code>0bd2e93159dc6104</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowContextWrapper</span></td><td><code>2439fe18b95fec2e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowCookieManager</span></td><td><code>0efb027a9e3e0089</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDateUtils</span></td><td><code>443b9be63f2de200</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDateUtils.DateUtilsReflector..Reflector0</span></td><td><code>a75411f92b8106bf</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDebug</span></td><td><code>516bc3703d378571</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDevicePolicyManager</span></td><td><code>0c6a50aef175961b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDexFile</span></td><td><code>838da2f341c7e209</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDialog</span></td><td><code>9897b715b832dc34</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplay</span></td><td><code>078793c84da3b468</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplay._Display_..Reflector8</span></td><td><code>e438890aa1aaa820</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplay._Display_..Reflector8</span></td><td><code>21fcc3c032969ea9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplayEventReceiver</span></td><td><code>f30ece4738423c6e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplayEventReceiver.DisplayEventReceiverReflector..Reflector31</span></td><td><code>7921c0d800b19094</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplayEventReceiver.DisplayEventReceiverReflector..Reflector31</span></td><td><code>6685ad723b51ddf3</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplayEventReceiver.FrameDisplayEventReceiverReflector..Reflector45</span></td><td><code>cc358c8cf4273fe9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplayEventReceiver.FrameDisplayEventReceiverReflector..Reflector45</span></td><td><code>685c90a48e249948</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplayEventReceiver.NativeDisplayEventReceiver</span></td><td><code>4fcff9dfcd24930d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplayManager</span></td><td><code>ab3b74def495630f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplayManagerGlobal</span></td><td><code>8625369a706c9949</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplayManagerGlobal.DisplayManagerGlobalReflector..Reflector7</span></td><td><code>7764d9a4dfcf2b68</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplayManagerGlobal.DisplayManagerGlobalReflector..Reflector7</span></td><td><code>afc49f1273a3cc44</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDisplayManagerGlobal.DisplayManagerProxyDelegate</span></td><td><code>ecd5d6a22f191266</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDownloadManager</span></td><td><code>20b4a5116c709fd5</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDrawable</span></td><td><code>0f6abc92185d04c0</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDrawable.DrawableReflector..Reflector16</span></td><td><code>ca0e26d67ecc253b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowDropBoxManager</span></td><td><code>4465534f475c3fc9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowEnvironment</span></td><td><code>99fa86c9813fdcf3</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowEventLog</span></td><td><code>31312d8617203ebb</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowFloatMath</span></td><td><code>e6974296cdbc74d4</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowGLSurfaceView</span></td><td><code>1f3cf5e5b8a6195b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowGeocoder</span></td><td><code>cd60bfa24afc46fb</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowICU</span></td><td><code>8f9eae4248c8868f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowInputEvent</span></td><td><code>65d3757ddfe0d3b7</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowInputEventReceiver</span></td><td><code>e10ee864e7852501</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowInputEventReceiver.InputEventReceiverReflector..Reflector33</span></td><td><code>8d2deac38c14a6b2</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowInputManager</span></td><td><code>e0bbb50c33280636</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowInputMethodManager</span></td><td><code>9fcb1fa5b6f55cdc</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowInputMethodManager._InputMethodManager_..Reflector42</span></td><td><code>d28b4f4dbedc847e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowInputMethodManager._InputMethodManager_..Reflector42</span></td><td><code>4166ad5b2d4f698a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowInstrumentation</span></td><td><code>ba06f2c2bb31a8f1</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowInstrumentation.ServiceConnectionDataWrapper</span></td><td><code>94aa4d80ef78dd3c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowInstrumentation._Instrumentation_..Reflector4</span></td><td><code>ebf86d489e64489a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowIntent</span></td><td><code>baa35a3cc7729878</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowKeyguardManager</span></td><td><code>9e590efc6fd7ed45</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowKeyguardManager.ShadowKeyguardLock</span></td><td><code>aa37cdaaa13137b2</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLauncherApps</span></td><td><code>cdf4f96c5f0b556b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacyBitmap</span></td><td><code>33adf472709bda52</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacyCanvas</span></td><td><code>60a40f72400f01b9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacyCanvas.CanvasReflector..Reflector29</span></td><td><code>ae736954de1b07d9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacyCanvas.NativeCanvas</span></td><td><code>1fded740f28df7e1</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacyChoreographer</span></td><td><code>7cc74786b9e416df</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacyChoreographer.1</span></td><td><code>938b91a3c341e8bb</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacyLooper</span></td><td><code>4f5e6a3aeafad46c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacyMatrix</span></td><td><code>22661f741cee8909</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacyMatrix.SimpleMatrix</span></td><td><code>805f5b294b53a9e3</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacyPath</span></td><td><code>ced3b6d455b6bc6c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacySQLiteConnection</span></td><td><code>c3c2e6ac3cac1052</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacySQLiteConnection.Connections</span></td><td><code>7475909331b8ae9a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacySystemClock</span></td><td><code>17b04d59fc0a2079</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLegacyTypeface</span></td><td><code>0adc62692a73c2dc</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLinearLayout</span></td><td><code>cf5f1bf83e92359a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLoadedApk</span></td><td><code>7bb620007292361c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLoadedApk._LoadedApk_..Reflector10</span></td><td><code>5b20440e0543ce2f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLoadedApk._LoadedApk_..Reflector10</span></td><td><code>82cc21652ad8ef64</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLocationManager</span></td><td><code>cba74bdc977ab7fa</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLog</span></td><td><code>dc23165455488c88</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLog.LogItem</span></td><td><code>73396a4e2b924e26</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLooper</span></td><td><code>e46ec933df188337</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowLooper.Picker</span></td><td><code>b920f176507fa983</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMatrix</span></td><td><code>11a87ce7390538f3</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMatrix.Picker</span></td><td><code>31f900858701489e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaActionSound</span></td><td><code>ed6a257e46fb2b3a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaCodec</span></td><td><code>00167f295bfa3a8b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaCodec.CodecConfig</span></td><td><code>bd5bfaa8b1e0becf</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaCodecList</span></td><td><code>2149db0acf869c2b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaExtractor</span></td><td><code>311b8f8b05d6586c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaMetadataRetriever</span></td><td><code>97df74dccb2e7980</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaPlayer</span></td><td><code>9658070f9dea409b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaPlayer.1</span></td><td><code>4ac81d59c11e6361</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaPlayer.2</span></td><td><code>fd1357c4f5d83736</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaPlayer.3</span></td><td><code>8c7b01ff7dd6db79</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaPlayer.ErrorCallback</span></td><td><code>2bc02c773a682279</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaPlayer.State</span></td><td><code>bbf661383ba94912</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaRouter</span></td><td><code>c00e4e7432ee33a1</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaScannerConnection</span></td><td><code>86aec4419f2fe9cb</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaSessionManager</span></td><td><code>823a894376ed8126</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMediaStore</span></td><td><code>aaf499f894679fbf</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMessage</span></td><td><code>ad8ffc72c5c75b20</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMessage.MessageReflector..Reflector17</span></td><td><code>41f8b829be2f463a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMessage.MessageReflector..Reflector17</span></td><td><code>3539a7eb3aa35d2d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMessage.Picker</span></td><td><code>bea872e561b27094</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMessageQueue</span></td><td><code>93962d51ecf61682</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMessageQueue.Picker</span></td><td><code>ea1113f1c1c1c455</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMessenger</span></td><td><code>36f090ac22f89fc5</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMimeTypeMap</span></td><td><code>369913a6ad6574bd</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowMotionEvent</span></td><td><code>20329fcae8132c34</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNativeBitmapDrawable.Picker</span></td><td><code>bc686e651e402def</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNativeBitmapFactory.Picker</span></td><td><code>49034a7684d9cd84</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNativeColor.Picker</span></td><td><code>d37483a27746f253</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNativeColorFilter.Picker</span></td><td><code>08edfc319c929185</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNativePaint.Picker</span></td><td><code>c5e032c01a2f1488</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNativePorterDuffColorFilter.Picker</span></td><td><code>36bb9c71d483647a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNativePropertyValuesHolder.Picker</span></td><td><code>c9456dd2739306e1</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNativeRegion.Picker</span></td><td><code>c8c5a30633d16cd3</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNativeRenderNodeAnimatorQ.Picker</span></td><td><code>de43eca0a7402da6</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNativeRenderNodeOP.Picker</span></td><td><code>8c160ae708274741</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNativeSurface.Picker</span></td><td><code>fce0fc492a255fa2</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNetwork</span></td><td><code>4f29157c5d14c7a1</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNetworkCapabilities</span></td><td><code>5f71adb11d1e3cfa</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNetworkCapabilities.NetworkCapabilitiesReflector..Reflector41</span></td><td><code>e6218efcf7c38f44</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNetworkCapabilities.NetworkCapabilitiesReflector..Reflector41</span></td><td><code>5e2b0040821010ab</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNetworkInfo</span></td><td><code>e922b72d6b28d1a4</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNetworkScoreManager</span></td><td><code>d07f1f0eca9ae802</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNfcAdapter</span></td><td><code>9ef143eb5f340032</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNfcAdapter.NfcAdapterReflector..Reflector43</span></td><td><code>ccf378beb10217f2</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNfcAdapter.NfcAdapterReflector..Reflector43</span></td><td><code>116e4a04136c8638</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNotificationListenerService</span></td><td><code>2a834a3076b31fb9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowNotificationManager</span></td><td><code>6821d57641d7b3f1</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPackageManager</span></td><td><code>3b76719865f1fe20</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPackageManager.ComponentState</span></td><td><code>b8fdc9e98fd443bf</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPackageManager.IntentComparator</span></td><td><code>1cb078a5b690f764</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPackageManager.PackageSetting</span></td><td><code>621b94c92bc8740e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPackageParser</span></td><td><code>c5bdb1d0f7c54e9d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPackageParser._PackageParser_</span></td><td><code>dbd25035b096bd73</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPackageParser._PackageParser_..Reflector11</span></td><td><code>f37085276c203c56</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPaint</span></td><td><code>2d4385c8c3a24bc2</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowParcel</span></td><td><code>aafd27440963ba06</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowParcel.ByteBuffer</span></td><td><code>433aeb8082c1c743</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowParcelFileDescriptor</span></td><td><code>f5034e4e7cdead82</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowParcelFileDescriptor.1</span></td><td><code>94c01f1ab60098c5</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPath</span></td><td><code>3c3013f1a1030844</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPath.Picker</span></td><td><code>413a7adf5126cc48</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPath.Point</span></td><td><code>2ca877457535721d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPath.Point.Type</span></td><td><code>a4eac6ca0b990875</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedAsyncTask</span></td><td><code>8820810d6cb52a19</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedChoreographer</span></td><td><code>a3943554cb1c76e2</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedLooper</span></td><td><code>c91bfc0475569dea</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedLooper.2</span></td><td><code>4002a867b001b823</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedLooper.ControlRunnable</span></td><td><code>298a639d9e012504</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedLooper.HandlerExecutor</span></td><td><code>20287365e9d8d2de</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedLooper.IdlingRunnable</span></td><td><code>12f6f283d8a85d7f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedLooper.LooperReflector..Reflector1</span></td><td><code>3cae921f4b26a1d8</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedLooper.LooperReflector..Reflector1</span></td><td><code>582d07cb022d4ac9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedMessage</span></td><td><code>076ac094a1d3ab86</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedMessageQueue</span></td><td><code>80d050216b4864e5</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedMessageQueue.MessageQueueReflector..Reflector2</span></td><td><code>671827b96d4d8528</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedMessageQueue.MessageQueueReflector..Reflector2</span></td><td><code>7d41860119518963</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPausedSystemClock</span></td><td><code>a90a111ea69824b8</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPendingIntent</span></td><td><code>819ece2d55166d1f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPendingIntent.1</span></td><td><code>afc678dab076a7ba</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPhoneWindow</span></td><td><code>0edf38bb9e0a4b26</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPhoneWindowFor22</span></td><td><code>aa5c1e680b66c47b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPhoneWindowFor22.DirectPhoneWindowFor22Reflector..Reflector20</span></td><td><code>d717d8177d96978d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPhoneWindowFor22.DirectPhoneWindowFor22Reflector..Reflector20</span></td><td><code>a7bbd5df79df63ef</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPolicyManager</span></td><td><code>b8e1fd05d378da05</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPorterDuffColorFilter</span></td><td><code>92a0c3fb0318e8e9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPowerManager</span></td><td><code>2963b51b1a8d9f96</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowProcess</span></td><td><code>34c951e0cfa11d37</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPropertyValuesHolder</span></td><td><code>62ba937b514583d9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowPropertyValuesHolder.PropertyValuesHolderReflector..Reflector34</span></td><td><code>d1548a3f38550357</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowQueuedWork</span></td><td><code>f80f77512ad039c7</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowQueuedWork.QueuedWorkReflector..Reflector46</span></td><td><code>baada205320530ad</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowQueuedWork.QueuedWorkReflector..Reflector46</span></td><td><code>0fd0e0e2735eb0bb</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowRegion</span></td><td><code>c9a1ff34470af20d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowRenderNode</span></td><td><code>495acad538def8e6</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowRenderNodeAnimator</span></td><td><code>c970ec4259f5c69f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowRenderNodeAnimator.RenderNodeAnimatorReflector..Reflector47</span></td><td><code>4270dad688293906</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowRenderNodeAnimator.RenderNodeAnimatorReflector..Reflector47</span></td><td><code>e9f3c06125c2524a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowResources</span></td><td><code>3781f044592df510</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowResources.ResourcesReflector..Reflector6</span></td><td><code>76b44ecbb2e77e1d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowResources.ResourcesReflector..Reflector6</span></td><td><code>8b5ff666055df382</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowResourcesManager</span></td><td><code>1b2b3fe5a9e5866f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowResourcesManager._ResourcesManager_..Reflector48</span></td><td><code>01485d51fd2c70fc</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowRestrictionsManager</span></td><td><code>3a84da04af1a4995</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowRotationWatcherFor22</span></td><td><code>736152e868b8b704</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSQLiteConnection</span></td><td><code>2dc97d47290c382d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSensorManager</span></td><td><code>a0e9e5323d58f36e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowServiceManager</span></td><td><code>d34e4f1e16030dd6</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowServiceManager.1</span></td><td><code>e0d091695722352d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowServiceManager.BinderProxyType</span></td><td><code>9fabc6c57f1743b3</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowServiceManager.BinderService</span></td><td><code>d178a9023d399b7d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSettings</span></td><td><code>fb8e36b8d9b0f656</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSettings.ShadowGlobal</span></td><td><code>77f256ef1e1b0476</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSettings.ShadowSecure</span></td><td><code>90a0be50c62035a3</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSettings.ShadowSystem</span></td><td><code>720f64b6f65220a2</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSmsManager</span></td><td><code>193f0419ed369a3c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSpeechRecognizer</span></td><td><code>2315ca34d694cd94</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowStatFs</span></td><td><code>456dc2f3aafbf6f0</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowStatFs.Stats</span></td><td><code>4a2bbf7587113916</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowStaticLayout</span></td><td><code>ea172713947ad91e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowStatusBarManager</span></td><td><code>170b41a36a0161ad</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowStorageManager</span></td><td><code>4c6144517b80737e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowStringBlock</span></td><td><code>a5202bf05dcb3ac8</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSurface</span></td><td><code>511abc20d58579d5</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSurface.SurfaceReflector..Reflector27</span></td><td><code>28efb5bd167ac60d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSurface.SurfaceReflector..Reflector27</span></td><td><code>63ea6fcfd7e184ba</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSurfaceControl</span></td><td><code>7482e2eb4584e52d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSystem</span></td><td><code>9785e8446c4121eb</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSystemClock</span></td><td><code>6c50242baeb637be</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSystemClock.Picker</span></td><td><code>a28ea660cedb6bc6</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowSystemProperties</span></td><td><code>52d8a0c953747469</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTelecomManager</span></td><td><code>1b4fc2c840dd453c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTelecomManager.CallRequestMode</span></td><td><code>ba211dd8d56270ce</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTelephony.ShadowSms</span></td><td><code>f3c2659905300436</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTelephonyManager</span></td><td><code>542d5a9e37084e0f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTextToSpeech</span></td><td><code>0e75d3aacaf7ccd9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTextView</span></td><td><code>215bce4d25450770</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTextView.TextViewReflector..Reflector25</span></td><td><code>55a26b8bd0e43843</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTextView.TextViewReflector..Reflector25</span></td><td><code>ad0996397e197bdf</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowToneGenerator</span></td><td><code>da0ad13590bb5fe9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTrace</span></td><td><code>727a8d3a5df10444</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTrafficStats</span></td><td><code>c34cb2b5aaa0c105</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTypeface</span></td><td><code>b29fd5a2bbf5fac4</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTypeface.FontDesc</span></td><td><code>83011042dcf72dd7</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowTypeface.Picker</span></td><td><code>5d30b0f8981f3f14</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowUsageStatsManager</span></td><td><code>cfb246c97fbf6b94</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowUsbManager</span></td><td><code>0881ec657c489053</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowUserManager</span></td><td><code>92347aae73173daa</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowUserManager.UserManagerState</span></td><td><code>4d69b0638813323c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowUserManager.UserState</span></td><td><code>aa46374203b04e3a</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowVMRuntime</span></td><td><code>6ccaf2b0ea153fec</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowValueAnimator</span></td><td><code>12293712744963c9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowValueAnimator.ValueAnimatorReflector..Reflector49</span></td><td><code>f108e39d202e3aab</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowValueAnimator.ValueAnimatorReflector..Reflector49</span></td><td><code>eac2b0ea4b5d6c0d</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowVibrator</span></td><td><code>9cda7d043a489017</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowView</span></td><td><code>e43f335616c7a847</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowView._View_..Reflector18</span></td><td><code>f585a5f700962043</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowView._View_..Reflector18</span></td><td><code>f2b5705ed9abc22f</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowViewConfiguration</span></td><td><code>9e868bee65878ef1</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowViewConfiguration.ViewConfigurationReflector..Reflector50</span></td><td><code>da0389c28da7968c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowViewGroup</span></td><td><code>2e8f75ea72d023b1</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowViewGroup.ViewGroupReflector..Reflector22</span></td><td><code>a48bfe39176222bd</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowViewRootImpl</span></td><td><code>20e81884dab98304</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowViewRootImpl.ViewRootImplReflector</span></td><td><code>9237ab38f41ebf3e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowViewRootImpl.ViewRootImplReflector..Reflector32</span></td><td><code>de5768b555e84b43</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowViewRootImpl.ViewRootImplReflector..Reflector32</span></td><td><code>6a77543a202f72fb</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowVpnService</span></td><td><code>284bf159edb6b35e</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWallpaperManager</span></td><td><code>630b853173a87ac9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWebSettings</span></td><td><code>9c787a7ef3e895fc</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWebView</span></td><td><code>d6e6c809b6763bf4</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWifiP2pManager</span></td><td><code>cf18d5c2e3a34d6c</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWindow</span></td><td><code>215fc2f4fa3da8b5</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWindow.WindowReflector..Reflector21</span></td><td><code>eb1b24ed69e48106</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWindow.WindowReflector..Reflector21</span></td><td><code>89a4d61861581218</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWindowManager</span></td><td><code>86332ae4fb33e8e9</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWindowManagerGlobal</span></td><td><code>cc3e1663f55bfeba</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWindowManagerGlobal.WindowManagerGlobalReflector..Reflector19</span></td><td><code>665cee948ea0fe5b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWindowManagerGlobal.WindowManagerGlobalReflector..Reflector19</span></td><td><code>e4f3cecfd87f2a9b</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWindowManagerGlobal.WindowSessionDelegate</span></td><td><code>7b36130981fb22aa</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWindowManagerImpl</span></td><td><code>9820b5c0a5b539cd</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWindowManagerImpl.ReflectorWindowManagerImpl..Reflector26</span></td><td><code>66033cc92dad8bec</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowWindowManagerImpl.ReflectorWindowManagerImpl..Reflector26</span></td><td><code>078d7f27049341c7</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowXmlBlock</span></td><td><code>30e5bde374bed492</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.ShadowXmlBlock.ShadowParser</span></td><td><code>9d2e7e786e0d6c34</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.SystemFeatureListInitializer</span></td><td><code>dd2ee34e478a9ac2</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows._Activity_</span></td><td><code>d6e89dea4bc2f1d3</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows._Activity_..Reflector12</span></td><td><code>1329de04b704e945</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows._Activity_..Reflector12</span></td><td><code>cc9ae0d04ab2db19</code></td></tr><tr><td><span class="el_class">org.robolectric.shadows.util.DataSource</span></td><td><code>ad9d2e0b7772c861</code></td></tr><tr><td><span class="el_class">org.robolectric.util.Join</span></td><td><code>b3c488c80a3b0fd5</code></td></tr><tr><td><span class="el_class">org.robolectric.util.Logger</span></td><td><code>79f73e33e23e1e67</code></td></tr><tr><td><span class="el_class">org.robolectric.util.OsUtil</span></td><td><code>66931e1454e4cf6f</code></td></tr><tr><td><span class="el_class">org.robolectric.util.PerfStatsCollector</span></td><td><code>bc0e9dee46847dbb</code></td></tr><tr><td><span class="el_class">org.robolectric.util.PerfStatsCollector.Event</span></td><td><code>72de6c3688ea13a2</code></td></tr><tr><td><span class="el_class">org.robolectric.util.PerfStatsCollector.MetricKey</span></td><td><code>a78a93e1015919b8</code></td></tr><tr><td><span class="el_class">org.robolectric.util.ReflectionHelpers</span></td><td><code>3a66108be0831409</code></td></tr><tr><td><span class="el_class">org.robolectric.util.ReflectionHelpers.ClassParameter</span></td><td><code>7e2d4dc71fe98870</code></td></tr><tr><td><span class="el_class">org.robolectric.util.Scheduler</span></td><td><code>8ec4c84a9a227b6d</code></td></tr><tr><td><span class="el_class">org.robolectric.util.Scheduler.IdleState</span></td><td><code>1b95b75829544911</code></td></tr><tr><td><span class="el_class">org.robolectric.util.SoftThreadLocal</span></td><td><code>64f879cca5de42e7</code></td></tr><tr><td><span class="el_class">org.robolectric.util.TempDirectory</span></td><td><code>c46b43af1ab946d6</code></td></tr><tr><td><span class="el_class">org.robolectric.util.TempDirectory.1</span></td><td><code>ad5be6f9d92d07f8</code></td></tr><tr><td><span class="el_class">org.robolectric.util.Util</span></td><td><code>5aefe1866d860959</code></td></tr><tr><td><span class="el_class">org.robolectric.util.inject.InjectionException</span></td><td><code>c3ac651b5360fee3</code></td></tr><tr><td><span class="el_class">org.robolectric.util.inject.Injector</span></td><td><code>1c8686904e2d2ff1</code></td></tr><tr><td><span class="el_class">org.robolectric.util.inject.Injector.ArrayProvider</span></td><td><code>9934d57835c871a1</code></td></tr><tr><td><span class="el_class">org.robolectric.util.inject.Injector.Builder</span></td><td><code>baf5d4678dd5d012</code></td></tr><tr><td><span class="el_class">org.robolectric.util.inject.Injector.Key</span></td><td><code>c95de495aaebc0fb</code></td></tr><tr><td><span class="el_class">org.robolectric.util.inject.Injector.ListProvider</span></td><td><code>5424f39a953744df</code></td></tr><tr><td><span class="el_class">org.robolectric.util.inject.Injector.MemoizingProvider</span></td><td><code>b5e95ed0139c5020</code></td></tr><tr><td><span class="el_class">org.robolectric.util.inject.Injector.ScopeBuilderProvider</span></td><td><code>cb85477be79d859c</code></td></tr><tr><td><span class="el_class">org.robolectric.util.inject.Injector.UnsatisfiedDependencyException</span></td><td><code>a131d58b9c39810b</code></td></tr><tr><td><span class="el_class">org.robolectric.util.inject.PluginFinder</span></td><td><code>773e7e2e939a489b</code></td></tr><tr><td><span class="el_class">org.robolectric.util.inject.PluginFinder.ServiceFinderAdapter</span></td><td><code>638714d0823a92f1</code></td></tr><tr><td><span class="el_class">org.robolectric.util.reflector.Reflector</span></td><td><code>c5e6023a0bea5de4</code></td></tr><tr><td><span class="el_class">org.robolectric.util.reflector.ReflectorClassWriter</span></td><td><code>ba08e974f4dbde1a</code></td></tr><tr><td><span class="el_class">org.robolectric.util.reflector.ReflectorClassWriter.AccessorMethodWriter</span></td><td><code>96b806676ceae39c</code></td></tr><tr><td><span class="el_class">org.robolectric.util.reflector.ReflectorClassWriter.BaseAdapter</span></td><td><code>ae29f0412616576e</code></td></tr><tr><td><span class="el_class">org.robolectric.util.reflector.ReflectorClassWriter.ReflectorMethodWriter</span></td><td><code>bcc951a831d6cb77</code></td></tr><tr><td><span class="el_class">org.robolectric.util.reflector.UnsafeAccess</span></td><td><code>6d1bc245eb975c52</code></td></tr><tr><td><span class="el_class">org.robolectric.util.reflector.UnsafeAccess.Danger11Plus</span></td><td><code>298f18444600c48e</code></td></tr><tr><td><span class="el_class">org.slf4j.LoggerFactory</span></td><td><code>a381b7ddf19bf47d</code></td></tr><tr><td><span class="el_class">org.slf4j.bridge.SLF4JBridgeHandler</span></td><td><code>a24ab9068b3f1049</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.NOPLoggerFactory</span></td><td><code>54f5632bfcb8d8d5</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.SubstituteLoggerFactory</span></td><td><code>dc7efc0107a4a62d</code></td></tr><tr><td><span class="el_class">org.slf4j.helpers.Util</span></td><td><code>857ff3acc0576435</code></td></tr><tr><td><span class="el_class">org.slf4j.impl.StaticLoggerBinder</span></td><td><code>6822bf7129d487fa</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC</span></td><td><code>10317457113bfadc</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC.1</span></td><td><code>20d870833c8554b8</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC.2</span></td><td><code>363dbdf653ee68f2</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC.ProviderService</span></td><td><code>23ed691d93759d9f</code></td></tr><tr><td><span class="el_class">sun.security.ec.SunEC.ProviderServiceA</span></td><td><code>a27ea226da06af84</code></td></tr><tr><td><span class="el_class">sun.security.jgss.SunProvider</span></td><td><code>16d7e57ddb85fa9a</code></td></tr><tr><td><span class="el_class">sun.security.jgss.SunProvider.1</span></td><td><code>0b84a6f03c7b2fbc</code></td></tr><tr><td><span class="el_class">sun.security.jgss.SunProvider.ProviderService</span></td><td><code>69fc499aae19f00b</code></td></tr><tr><td><span class="el_class">sun.security.pkcs11.SunPKCS11</span></td><td><code>72545b634062cb28</code></td></tr><tr><td><span class="el_class">sun.security.pkcs11.SunPKCS11.Descriptor</span></td><td><code>48c0c73f1b03cc89</code></td></tr><tr><td><span class="el_class">sun.security.smartcardio.SunPCSC</span></td><td><code>77639c6e84261940</code></td></tr><tr><td><span class="el_class">sun.security.smartcardio.SunPCSC.1</span></td><td><code>770f21eca8076950</code></td></tr><tr><td><span class="el_class">sun.security.smartcardio.SunPCSC.ProviderService</span></td><td><code>4c00386af5b22493</code></td></tr><tr><td><span class="el_class">sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo</span></td><td><code>3d1ea3e23b319ce9</code></td></tr><tr><td><span class="el_class">sun.util.resources.provider.NonBaseLocaleDataMetaInfo</span></td><td><code>fbc0acd0e1812c05</code></td></tr><tr><td><span class="el_class">worker.org.gradle.api.JavaVersion</span></td><td><code>aaef7cd2313e04d9</code></td></tr><tr><td><span class="el_class">worker.org.gradle.api.internal.jvm.JavaVersionParser</span></td><td><code>1206b4dd1a2e9827</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.ClassLoaderSpec</span></td><td><code>cb374b01ccbebc0b</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.ClassLoaderUtils</span></td><td><code>8203100709821636</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.ClassLoaderUtils.AbstractClassLoaderLookuper</span></td><td><code>c285dc94ede87ba6</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.ClassLoaderUtils.Java9PackagesFetcher</span></td><td><code>66503273ab6df058</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.ClassLoaderUtils.LookupClassDefiner</span></td><td><code>101fed03f270a39f</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.FilteringClassLoader</span></td><td><code>685f3dec8c07e429</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.FilteringClassLoader.RetrieveSystemPackagesClassLoader</span></td><td><code>f37f538880fb8032</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.FilteringClassLoader.Spec</span></td><td><code>66254ecaab39094b</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.classloader.FilteringClassLoader.TrieSet</span></td><td><code>9ca6d89930a3c026</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.stream.EncodedStream.EncodedInput</span></td><td><code>9af7c11b2107c234</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.util.Trie</span></td><td><code>19fbee069a29feb3</code></td></tr><tr><td><span class="el_class">worker.org.gradle.internal.util.Trie.Builder</span></td><td><code>3ff89b3303eddda1</code></td></tr><tr><td><span class="el_class">worker.org.gradle.process.internal.worker.GradleWorkerMain</span></td><td><code>232767ef46e8d7ca</code></td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
    \ No newline at end of file
    diff --git a/demo-project/specs/aggregated-reports/coverage/jacocoAggregatedReport.xml b/demo-project/specs/aggregated-reports/coverage/jacocoAggregatedReport.xml
    new file mode 100644
    index 0000000..6a3b3db
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/coverage/jacocoAggregatedReport.xml
    @@ -0,0 +1 @@
    +<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!DOCTYPE report PUBLIC "-//JACOCO//DTD Report 1.1//EN" "report.dtd"><report name="demo-project"><sessioninfo id="gmazzola-mac-6.local-fba12aa7" start="1732549606849" dump="1732549607751"/><sessioninfo id="gmazzola-mac-6.local-27d6bd8e" start="1732789771642" dump="1732789772541"/><sessioninfo id="gmazzola-mac-6.local-f6901432" start="1732789771711" dump="1732789772543"/><sessioninfo id="gmazzola-mac-6.local-68132984" start="1732789771867" dump="1732789772677"/><sessioninfo id="gmazzola-mac-6.local-bbb4f5e" start="1732789771787" dump="1732789775896"/><sessioninfo id="gmazzola-mac-6.local-6fbcd827" start="1732789771787" dump="1732789775902"/><package name="com/example/myapplication"><class name="com/example/myapplication/SecondFragment" sourcefilename="SecondFragment.kt"><method name="&lt;init&gt;" desc="()V" line="14"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getBinding" desc="()Lcom/example/myapplication/databinding/FragmentSecondBinding;" line="20"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onCreateView" desc="(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Landroid/os/Bundle;)Landroid/view/View;" line="27"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onViewCreated" desc="(Landroid/view/View;Landroid/os/Bundle;)V" line="33"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onDestroyView" desc="()V" line="41"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onViewCreated$lambda$0" desc="(Lcom/example/myapplication/SecondFragment;Landroid/view/View;)V" line="36"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="48" covered="0"/><counter type="LINE" missed="12" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="6" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/myapplication/FirstFragment" sourcefilename="FirstFragment.kt"><method name="&lt;init&gt;" desc="()V" line="14"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getBinding" desc="()Lcom/example/myapplication/databinding/FragmentFirstBinding;" line="20"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="onCreateView" desc="(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Landroid/os/Bundle;)Landroid/view/View;" line="27"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="onViewCreated" desc="(Landroid/view/View;Landroid/os/Bundle;)V" line="33"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="onDestroyView" desc="()V" line="41"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="onViewCreated$lambda$0" desc="(Lcom/example/myapplication/FirstFragment;Landroid/view/View;)V" line="36"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="6" covered="42"/><counter type="LINE" missed="2" covered="10"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="1" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="com/example/myapplication/MainActivity$onPostCreate$$inlined$AppBarConfiguration$default$1" sourcefilename="AppBarConfiguration.kt"><method name="invoke" desc="()Ljava/lang/Boolean;" line="251"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/myapplication/MainActivity" sourcefilename="MainActivity.kt"><method name="&lt;init&gt;" desc="()V" line="12"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="onPostCreate" desc="(Landroid/os/Bundle;)V" line="18"><counter type="INSTRUCTION" missed="0" covered="45"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="onSupportNavigateUp" desc="()Z" line="36"><counter type="INSTRUCTION" missed="18" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onPostCreate$lambda$0" desc="(Landroid/view/View;)V" line="30"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="29" covered="48"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="6" covered="10"/><counter type="COMPLEXITY" missed="4" covered="2"/><counter type="METHOD" missed="2" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="FirstFragment.kt"><line nr="14" mi="0" ci="3" mb="0" cb="0"/><line nr="20" mi="0" ci="5" mb="0" cb="0"/><line nr="27" mi="0" ci="6" mb="0" cb="0"/><line nr="28" mi="0" ci="5" mb="0" cb="0"/><line nr="33" mi="0" ci="3" mb="0" cb="0"/><line nr="35" mi="0" ci="6" mb="0" cb="0"/><line nr="36" mi="5" ci="0" mb="0" cb="0"/><line nr="37" mi="1" ci="0" mb="0" cb="0"/><line nr="38" mi="0" ci="1" mb="0" cb="0"/><line nr="41" mi="0" ci="1" mb="0" cb="0"/><line nr="42" mi="0" ci="3" mb="0" cb="0"/><line nr="43" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="6" covered="42"/><counter type="LINE" missed="2" covered="10"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="1" covered="5"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="SecondFragment.kt"><line nr="14" mi="3" ci="0" mb="0" cb="0"/><line nr="20" mi="5" ci="0" mb="0" cb="0"/><line nr="27" mi="6" ci="0" mb="0" cb="0"/><line nr="28" mi="5" ci="0" mb="0" cb="0"/><line nr="33" mi="3" ci="0" mb="0" cb="0"/><line nr="35" mi="6" ci="0" mb="0" cb="0"/><line nr="36" mi="5" ci="0" mb="0" cb="0"/><line nr="37" mi="1" ci="0" mb="0" cb="0"/><line nr="38" mi="1" ci="0" mb="0" cb="0"/><line nr="41" mi="1" ci="0" mb="0" cb="0"/><line nr="42" mi="3" ci="0" mb="0" cb="0"/><line nr="43" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="48" covered="0"/><counter type="LINE" missed="12" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="6" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="AppBarConfiguration.kt"><line nr="251" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="MainActivity.kt"><line nr="12" mi="0" ci="3" mb="0" cb="0"/><line nr="18" mi="0" ci="2" mb="0" cb="0"/><line nr="20" mi="0" ci="5" mb="0" cb="0"/><line nr="21" mi="0" ci="7" mb="0" cb="0"/><line nr="23" mi="0" ci="6" mb="0" cb="0"/><line nr="25" mi="0" ci="5" mb="0" cb="0"/><line nr="26" mi="0" ci="5" mb="0" cb="0"/><line nr="27" mi="0" ci="7" mb="0" cb="0"/><line nr="29" mi="0" ci="6" mb="0" cb="0"/><line nr="30" mi="5" ci="0" mb="0" cb="0"/><line nr="31" mi="5" ci="0" mb="0" cb="0"/><line nr="32" mi="1" ci="0" mb="0" cb="0"/><line nr="33" mi="0" ci="1" mb="0" cb="0"/><line nr="36" mi="5" ci="0" mb="0" cb="0"/><line nr="37" mi="8" ci="0" mb="2" cb="0"/><line nr="38" mi="5" ci="0" mb="2" cb="0"/><counter type="INSTRUCTION" missed="29" covered="48"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="6" covered="10"/><counter type="COMPLEXITY" missed="4" covered="2"/><counter type="METHOD" missed="2" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="86" covered="90"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="21" covered="20"/><counter type="COMPLEXITY" missed="12" covered="7"/><counter type="METHOD" missed="10" covered="7"/><counter type="CLASS" missed="2" covered="2"/></package><package name="com/example/login/databinding"><class name="com/example/login/databinding/ActivityLoginBinding" sourcefilename="ActivityLoginBinding.java"><method name="&lt;init&gt;" desc="(Landroidx/constraintlayout/widget/ConstraintLayout;Landroidx/constraintlayout/widget/ConstraintLayout;Landroid/widget/ProgressBar;Landroid/widget/Button;Landroid/widget/EditText;Landroid/widget/EditText;)V" line="41"><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getRoot" desc="()Landroidx/constraintlayout/widget/ConstraintLayout;" line="53"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="inflate" desc="(Landroid/view/LayoutInflater;)Lcom/example/login/databinding/ActivityLoginBinding;" line="58"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="inflate" desc="(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Z)Lcom/example/login/databinding/ActivityLoginBinding;" line="64"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="bind" desc="(Landroid/view/View;)Lcom/example/login/databinding/ActivityLoginBinding;" line="77"><counter type="INSTRUCTION" missed="66" covered="0"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="20" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="109" covered="0"/><counter type="BRANCH" missed="10" covered="0"/><counter type="LINE" missed="34" covered="0"/><counter type="COMPLEXITY" missed="10" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="ActivityLoginBinding.java"><line nr="41" mi="2" ci="0" mb="0" cb="0"/><line nr="42" mi="3" ci="0" mb="0" cb="0"/><line nr="43" mi="3" ci="0" mb="0" cb="0"/><line nr="44" mi="3" ci="0" mb="0" cb="0"/><line nr="45" mi="3" ci="0" mb="0" cb="0"/><line nr="46" mi="3" ci="0" mb="0" cb="0"/><line nr="47" mi="3" ci="0" mb="0" cb="0"/><line nr="48" mi="1" ci="0" mb="0" cb="0"/><line nr="53" mi="3" ci="0" mb="0" cb="0"/><line nr="58" mi="5" ci="0" mb="0" cb="0"/><line nr="64" mi="6" ci="0" mb="0" cb="0"/><line nr="65" mi="2" ci="0" mb="2" cb="0"/><line nr="66" mi="3" ci="0" mb="0" cb="0"/><line nr="68" mi="3" ci="0" mb="0" cb="0"/><line nr="77" mi="3" ci="0" mb="0" cb="0"/><line nr="79" mi="2" ci="0" mb="0" cb="0"/><line nr="80" mi="5" ci="0" mb="0" cb="0"/><line nr="81" mi="2" ci="0" mb="2" cb="0"/><line nr="82" mi="1" ci="0" mb="0" cb="0"/><line nr="85" mi="2" ci="0" mb="0" cb="0"/><line nr="86" mi="5" ci="0" mb="0" cb="0"/><line nr="87" mi="2" ci="0" mb="2" cb="0"/><line nr="88" mi="1" ci="0" mb="0" cb="0"/><line nr="91" mi="2" ci="0" mb="0" cb="0"/><line nr="92" mi="5" ci="0" mb="0" cb="0"/><line nr="93" mi="2" ci="0" mb="2" cb="0"/><line nr="94" mi="1" ci="0" mb="0" cb="0"/><line nr="97" mi="2" ci="0" mb="0" cb="0"/><line nr="98" mi="5" ci="0" mb="0" cb="0"/><line nr="99" mi="2" ci="0" mb="2" cb="0"/><line nr="100" mi="1" ci="0" mb="0" cb="0"/><line nr="103" mi="11" ci="0" mb="0" cb="0"/><line nr="106" mi="5" ci="0" mb="0" cb="0"/><line nr="107" mi="7" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="109" covered="0"/><counter type="BRANCH" missed="10" covered="0"/><counter type="LINE" missed="34" covered="0"/><counter type="COMPLEXITY" missed="10" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="109" covered="0"/><counter type="BRANCH" missed="10" covered="0"/><counter type="LINE" missed="34" covered="0"/><counter type="COMPLEXITY" missed="10" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></package><package name="com/example/kmp"><class name="com/example/kmp/KMPObjectAndroid" sourcefilename="KMPObjectAndroid.kt"><method name="getPlatform" desc="()Ljava/lang/String;" line="5"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="5"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="com/example/kmp/KMPObject" sourcefilename="KMPObject.kt"><method name="getPlatform" desc="()Ljava/lang/String;" line="5"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="5"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="com/example/kmp/MoshiObjAndroidJsonAdapter" sourcefilename="MoshiObjAndroidJsonAdapter.kt"><method name="&lt;init&gt;" desc="(Lcom/squareup/moshi/Moshi;)V" line="20"><counter type="INSTRUCTION" missed="35" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="toString" desc="()Ljava/lang/String;" line="28"><counter type="INSTRUCTION" missed="25" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="fromJson" desc="(Lcom/squareup/moshi/JsonReader;)Lcom/example/kmp/MoshiObjAndroid;" line="32"><counter type="INSTRUCTION" missed="76" covered="0"/><counter type="BRANCH" missed="14" covered="0"/><counter type="LINE" missed="13" covered="0"/><counter type="COMPLEXITY" missed="9" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="toJson" desc="(Lcom/squareup/moshi/JsonWriter;Lcom/example/kmp/MoshiObjAndroid;)V" line="54"><counter type="INSTRUCTION" missed="37" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="9" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="173" covered="0"/><counter type="BRANCH" missed="16" covered="0"/><counter type="LINE" missed="29" covered="0"/><counter type="COMPLEXITY" missed="13" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/kmp/KMPObjectJVM" sourcefilename="KMPObjectJVM.kt"><method name="getPlatform" desc="()Ljava/lang/String;" line="5"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="5"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="com/example/kmp/MoshiObjJVMJsonAdapter" sourcefilename="MoshiObjJVMJsonAdapter.kt"><method name="&lt;init&gt;" desc="(Lcom/squareup/moshi/Moshi;)V" line="20"><counter type="INSTRUCTION" missed="35" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="toString" desc="()Ljava/lang/String;" line="28"><counter type="INSTRUCTION" missed="25" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="fromJson" desc="(Lcom/squareup/moshi/JsonReader;)Lcom/example/kmp/MoshiObjJVM;" line="32"><counter type="INSTRUCTION" missed="76" covered="0"/><counter type="BRANCH" missed="14" covered="0"/><counter type="LINE" missed="13" covered="0"/><counter type="COMPLEXITY" missed="9" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="toJson" desc="(Lcom/squareup/moshi/JsonWriter;Lcom/example/kmp/MoshiObjJVM;)V" line="54"><counter type="INSTRUCTION" missed="37" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="9" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="173" covered="0"/><counter type="BRANCH" missed="16" covered="0"/><counter type="LINE" missed="29" covered="0"/><counter type="COMPLEXITY" missed="13" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/kmp/MoshiObjJVM" sourcefilename="MoshiObjJVM.kt"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="6"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getA" desc="()Ljava/lang/String;" line="7"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getB" desc="()Ljava/lang/String;" line="8"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/kmp/MoshiObjAndroid" sourcefilename="MoshiObjAndroid.kt"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="6"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getA" desc="()Ljava/lang/String;" line="7"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getB" desc="()Ljava/lang/String;" line="8"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/kmp/PlatformKt" sourcefilename="Platform.kt"><method name="getPLATFORM" desc="()Ljava/lang/String;" line="3"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="3"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="KMPObjectAndroid.kt"><line nr="5" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="MoshiObjJVM.kt"><line nr="6" mi="3" ci="0" mb="0" cb="0"/><line nr="7" mi="6" ci="0" mb="0" cb="0"/><line nr="8" mi="6" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="MoshiObjAndroid.kt"><line nr="6" mi="3" ci="0" mb="0" cb="0"/><line nr="7" mi="6" ci="0" mb="0" cb="0"/><line nr="8" mi="6" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="MoshiObjAndroidJsonAdapter.kt"><line nr="20" mi="1" ci="0" mb="0" cb="0"/><line nr="22" mi="2" ci="0" mb="0" cb="0"/><line nr="23" mi="18" ci="0" mb="0" cb="0"/><line nr="25" mi="10" ci="0" mb="0" cb="0"/><line nr="26" mi="1" ci="0" mb="0" cb="0"/><line nr="28" mi="16" ci="0" mb="0" cb="0"/><line nr="29" mi="9" ci="0" mb="0" cb="0"/><line nr="32" mi="2" ci="0" mb="0" cb="0"/><line nr="33" mi="2" ci="0" mb="0" cb="0"/><line nr="34" mi="2" ci="0" mb="0" cb="0"/><line nr="35" mi="3" ci="0" mb="2" cb="0"/><line nr="36" mi="5" ci="0" mb="4" cb="0"/><line nr="37" mi="15" ci="0" mb="2" cb="0"/><line nr="38" mi="15" ci="0" mb="2" cb="0"/><line nr="41" mi="2" ci="0" mb="0" cb="0"/><line nr="42" mi="3" ci="0" mb="0" cb="0"/><line nr="46" mi="2" ci="0" mb="0" cb="0"/><line nr="47" mi="4" ci="0" mb="0" cb="0"/><line nr="48" mi="9" ci="0" mb="2" cb="0"/><line nr="49" mi="9" ci="0" mb="2" cb="0"/><line nr="54" mi="2" ci="0" mb="2" cb="0"/><line nr="55" mi="5" ci="0" mb="0" cb="0"/><line nr="57" mi="3" ci="0" mb="0" cb="0"/><line nr="58" mi="4" ci="0" mb="0" cb="0"/><line nr="59" mi="6" ci="0" mb="0" cb="0"/><line nr="60" mi="4" ci="0" mb="0" cb="0"/><line nr="61" mi="6" ci="0" mb="0" cb="0"/><line nr="62" mi="3" ci="0" mb="0" cb="0"/><line nr="63" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="173" covered="0"/><counter type="BRANCH" missed="16" covered="0"/><counter type="LINE" missed="29" covered="0"/><counter type="COMPLEXITY" missed="13" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="MoshiObjJVMJsonAdapter.kt"><line nr="20" mi="1" ci="0" mb="0" cb="0"/><line nr="22" mi="2" ci="0" mb="0" cb="0"/><line nr="23" mi="18" ci="0" mb="0" cb="0"/><line nr="25" mi="10" ci="0" mb="0" cb="0"/><line nr="26" mi="1" ci="0" mb="0" cb="0"/><line nr="28" mi="16" ci="0" mb="0" cb="0"/><line nr="29" mi="9" ci="0" mb="0" cb="0"/><line nr="32" mi="2" ci="0" mb="0" cb="0"/><line nr="33" mi="2" ci="0" mb="0" cb="0"/><line nr="34" mi="2" ci="0" mb="0" cb="0"/><line nr="35" mi="3" ci="0" mb="2" cb="0"/><line nr="36" mi="5" ci="0" mb="4" cb="0"/><line nr="37" mi="15" ci="0" mb="2" cb="0"/><line nr="38" mi="15" ci="0" mb="2" cb="0"/><line nr="41" mi="2" ci="0" mb="0" cb="0"/><line nr="42" mi="3" ci="0" mb="0" cb="0"/><line nr="46" mi="2" ci="0" mb="0" cb="0"/><line nr="47" mi="4" ci="0" mb="0" cb="0"/><line nr="48" mi="9" ci="0" mb="2" cb="0"/><line nr="49" mi="9" ci="0" mb="2" cb="0"/><line nr="54" mi="2" ci="0" mb="2" cb="0"/><line nr="55" mi="5" ci="0" mb="0" cb="0"/><line nr="57" mi="3" ci="0" mb="0" cb="0"/><line nr="58" mi="4" ci="0" mb="0" cb="0"/><line nr="59" mi="6" ci="0" mb="0" cb="0"/><line nr="60" mi="4" ci="0" mb="0" cb="0"/><line nr="61" mi="6" ci="0" mb="0" cb="0"/><line nr="62" mi="3" ci="0" mb="0" cb="0"/><line nr="63" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="173" covered="0"/><counter type="BRANCH" missed="16" covered="0"/><counter type="LINE" missed="29" covered="0"/><counter type="COMPLEXITY" missed="13" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="KMPObjectJVM.kt"><line nr="5" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="KMPObject.kt"><line nr="5" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="Platform.kt"><line nr="3" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="388" covered="32"/><counter type="BRANCH" missed="32" covered="0"/><counter type="LINE" missed="64" covered="4"/><counter type="COMPLEXITY" missed="32" covered="8"/><counter type="METHOD" missed="14" covered="8"/><counter type="CLASS" missed="4" covered="4"/></package><package name="com/example/domain"><class name="com/example/domain/MyUseCase" sourcefilename="MyUseCase.kt"><method name="&lt;init&gt;" desc="()V" line="3"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="doSomething" desc="()Ljava/lang/String;" line="5"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="MyUseCase.kt"><line nr="3" mi="0" ci="3" mb="0" cb="0"/><line nr="5" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></package><package name="com/example/login/ui/login"><class name="com/example/login/ui/login/LoginViewModel" sourcefilename="LoginViewModel.kt"><method name="&lt;init&gt;" desc="(Lcom/example/login/ui/data/LoginRepository;)V" line="11"><counter type="INSTRUCTION" missed="29" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getLoginFormState" desc="()Landroidx/lifecycle/LiveData;" line="14"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getLoginResult" desc="()Landroidx/lifecycle/LiveData;" line="17"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="login" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="21"><counter type="INSTRUCTION" missed="45" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="loginDataChanged" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="32"><counter type="INSTRUCTION" missed="52" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isUserNameValid" desc="(Ljava/lang/String;)Z" line="43"><counter type="INSTRUCTION" missed="22" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isPasswordValid" desc="(Ljava/lang/String;)Z" line="52"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="162" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="21" covered="0"/><counter type="COMPLEXITY" missed="13" covered="0"/><counter type="METHOD" missed="7" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/login/ui/login/LoginActivityKt$afterTextChanged$1" sourcefilename="LoginActivity.kt"><method name="&lt;init&gt;" desc="(Lkotlin/jvm/functions/Function1;)V" line="120"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="afterTextChanged" desc="(Landroid/text/Editable;)V" line="122"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="beforeTextChanged" desc="(Ljava/lang/CharSequence;III)V" line="125"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onTextChanged" desc="(Ljava/lang/CharSequence;III)V" line="127"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/login/ui/login/LoginActivityKt" sourcefilename="LoginActivity.kt"><method name="afterTextChanged" desc="(Landroid/widget/EditText;Lkotlin/jvm/functions/Function1;)V" line="120"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/login/ui/login/LoggedInUserView" sourcefilename="LoggedInUserView.kt"><method name="&lt;init&gt;" desc="(Ljava/lang/String;)V" line="6"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getDisplayName" desc="()Ljava/lang/String;" line="7"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/login/ui/login/LoginActivity" sourcefilename="LoginActivity.kt"><method name="&lt;init&gt;" desc="()V" line="18"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onCreate" desc="(Landroid/os/Bundle;)V" line="24"><counter type="INSTRUCTION" missed="117" covered="0"/><counter type="LINE" missed="18" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="updateUiWithUser" desc="(Lcom/example/login/ui/login/LoggedInUserView;)V" line="101"><counter type="INSTRUCTION" missed="20" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="showLoginFailed" desc="(I)V" line="112"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onCreate$lambda$0" desc="(Landroid/widget/Button;Landroid/widget/EditText;Lcom/example/login/ui/login/LoginActivity;Landroid/widget/EditText;Lcom/example/login/ui/login/LoginFormState;)V" line="38"><counter type="INSTRUCTION" missed="33" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onCreate$lambda$1" desc="(Landroid/widget/ProgressBar;Lcom/example/login/ui/login/LoginActivity;Lcom/example/login/ui/login/LoginResult;)V" line="52"><counter type="INSTRUCTION" missed="30" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="9" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onCreate$lambda$2" desc="(Lcom/example/login/ui/login/LoginActivity;Landroid/widget/EditText;Landroid/widget/EditText;Ljava/lang/String;)Lkotlin/Unit;" line="68"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onCreate$lambda$6$lambda$3" desc="(Lcom/example/login/ui/login/LoginActivity;Landroid/widget/EditText;Landroid/widget/EditText;Ljava/lang/String;)Lkotlin/Unit;" line="76"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onCreate$lambda$6$lambda$4" desc="(Lcom/example/login/ui/login/LoginActivity;Landroid/widget/EditText;Landroid/widget/EditText;Landroid/widget/TextView;ILandroid/view/KeyEvent;)Z" line="83"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="onCreate$lambda$6$lambda$5" desc="(Landroid/widget/ProgressBar;Lcom/example/login/ui/login/LoginActivity;Landroid/widget/EditText;Landroid/widget/EditText;Landroid/view/View;)V" line="94"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="269" covered="0"/><counter type="BRANCH" missed="14" covered="0"/><counter type="LINE" missed="62" covered="0"/><counter type="COMPLEXITY" missed="17" covered="0"/><counter type="METHOD" missed="10" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/login/ui/login/LoginViewModelFactory" sourcefilename="LoginViewModelFactory.kt"><method name="&lt;init&gt;" desc="()V" line="12"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="create" desc="(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel;" line="16"><counter type="INSTRUCTION" missed="23" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="26" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/login/ui/login/LoginFormState" sourcefilename="LoginFormState.kt"><method name="&lt;init&gt;" desc="(Ljava/lang/Integer;Ljava/lang/Integer;Z)V" line="6"><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/Integer;Ljava/lang/Integer;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V" line="6"><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getUsernameError" desc="()Ljava/lang/Integer;" line="7"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getPasswordError" desc="()Ljava/lang/Integer;" line="8"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isDataValid" desc="()Z" line="9"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="42" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/login/ui/login/LoginResult" sourcefilename="LoginResult.kt"><method name="&lt;init&gt;" desc="(Lcom/example/login/ui/login/LoggedInUserView;Ljava/lang/Integer;)V" line="6"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;init&gt;" desc="(Lcom/example/login/ui/login/LoggedInUserView;Ljava/lang/Integer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V" line="6"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getSuccess" desc="()Lcom/example/login/ui/login/LoggedInUserView;" line="7"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getError" desc="()Ljava/lang/Integer;" line="8"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="30" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="LoginResult.kt"><line nr="6" mi="13" ci="0" mb="0" cb="0"/><line nr="7" mi="8" ci="0" mb="0" cb="0"/><line nr="8" mi="8" ci="0" mb="0" cb="0"/><line nr="9" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="30" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="LoggedInUserView.kt"><line nr="6" mi="3" ci="0" mb="0" cb="0"/><line nr="7" mi="6" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="LoginFormState.kt"><line nr="6" mi="17" ci="0" mb="0" cb="0"/><line nr="7" mi="8" ci="0" mb="0" cb="0"/><line nr="8" mi="8" ci="0" mb="0" cb="0"/><line nr="9" mi="8" ci="0" mb="0" cb="0"/><line nr="10" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="42" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="LoginActivity.kt"><line nr="18" mi="3" ci="0" mb="0" cb="0"/><line nr="24" mi="2" ci="0" mb="0" cb="0"/><line nr="26" mi="5" ci="0" mb="0" cb="0"/><line nr="27" mi="7" ci="0" mb="0" cb="0"/><line nr="29" mi="8" ci="0" mb="0" cb="0"/><line nr="30" mi="8" ci="0" mb="0" cb="0"/><line nr="31" mi="8" ci="0" mb="0" cb="0"/><line nr="32" mi="8" ci="0" mb="0" cb="0"/><line nr="34" mi="11" ci="0" mb="0" cb="0"/><line nr="35" mi="3" ci="0" mb="0" cb="0"/><line nr="37" mi="12" ci="0" mb="0" cb="0"/><line nr="38" mi="6" ci="0" mb="2" cb="0"/><line nr="41" mi="4" ci="0" mb="0" cb="0"/><line nr="43" mi="3" ci="0" mb="2" cb="0"/><line nr="44" mi="8" ci="0" mb="0" cb="0"/><line nr="46" mi="3" ci="0" mb="2" cb="0"/><line nr="47" mi="8" ci="0" mb="0" cb="0"/><line nr="49" mi="1" ci="0" mb="0" cb="0"/><line nr="51" mi="10" ci="0" mb="0" cb="0"/><line nr="52" mi="6" ci="0" mb="2" cb="0"/><line nr="54" mi="3" ci="0" mb="0" cb="0"/><line nr="55" mi="3" ci="0" mb="2" cb="0"/><line nr="56" mi="5" ci="0" mb="0" cb="0"/><line nr="58" mi="3" ci="0" mb="2" cb="0"/><line nr="59" mi="4" ci="0" mb="0" cb="0"/><line nr="61" mi="3" ci="0" mb="0" cb="0"/><line nr="64" mi="2" ci="0" mb="0" cb="0"/><line nr="65" mi="1" ci="0" mb="0" cb="0"/><line nr="67" mi="6" ci="0" mb="0" cb="0"/><line nr="68" mi="4" ci="0" mb="0" cb="0"/><line nr="69" mi="3" ci="0" mb="0" cb="0"/><line nr="70" mi="3" ci="0" mb="0" cb="0"/><line nr="72" mi="2" ci="0" mb="0" cb="0"/><line nr="74" mi="7" ci="0" mb="0" cb="0"/><line nr="75" mi="6" ci="0" mb="0" cb="0"/><line nr="76" mi="4" ci="0" mb="0" cb="0"/><line nr="77" mi="3" ci="0" mb="0" cb="0"/><line nr="78" mi="3" ci="0" mb="0" cb="0"/><line nr="80" mi="2" ci="0" mb="0" cb="0"/><line nr="82" mi="6" ci="0" mb="0" cb="0"/><line nr="83" mi="1" ci="0" mb="0" cb="0"/><line nr="84" mi="2" ci="0" mb="2" cb="0"/><line nr="85" mi="4" ci="0" mb="0" cb="0"/><line nr="86" mi="3" ci="0" mb="0" cb="0"/><line nr="87" mi="3" ci="0" mb="0" cb="0"/><line nr="90" mi="2" ci="0" mb="0" cb="0"/><line nr="93" mi="7" ci="0" mb="0" cb="0"/><line nr="94" mi="3" ci="0" mb="0" cb="0"/><line nr="95" mi="10" ci="0" mb="0" cb="0"/><line nr="96" mi="1" ci="0" mb="0" cb="0"/><line nr="97" mi="1" ci="0" mb="0" cb="0"/><line nr="98" mi="1" ci="0" mb="0" cb="0"/><line nr="101" mi="7" ci="0" mb="0" cb="0"/><line nr="102" mi="3" ci="0" mb="0" cb="0"/><line nr="104" mi="1" ci="0" mb="0" cb="0"/><line nr="105" mi="2" ci="0" mb="0" cb="0"/><line nr="106" mi="4" ci="0" mb="0" cb="0"/><line nr="107" mi="1" ci="0" mb="0" cb="0"/><line nr="108" mi="1" ci="0" mb="0" cb="0"/><line nr="109" mi="1" ci="0" mb="0" cb="0"/><line nr="112" mi="6" ci="0" mb="0" cb="0"/><line nr="113" mi="1" ci="0" mb="0" cb="0"/><line nr="120" mi="10" ci="0" mb="0" cb="0"/><line nr="122" mi="6" ci="0" mb="0" cb="0"/><line nr="123" mi="1" ci="0" mb="0" cb="0"/><line nr="125" mi="1" ci="0" mb="0" cb="0"/><line nr="127" mi="1" ci="0" mb="0" cb="0"/><line nr="129" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="304" covered="0"/><counter type="BRANCH" missed="14" covered="0"/><counter type="LINE" missed="68" covered="0"/><counter type="COMPLEXITY" missed="22" covered="0"/><counter type="METHOD" missed="15" covered="0"/><counter type="CLASS" missed="3" covered="0"/></sourcefile><sourcefile name="LoginViewModelFactory.kt"><line nr="12" mi="3" ci="0" mb="0" cb="0"/><line nr="16" mi="4" ci="0" mb="2" cb="0"/><line nr="17" mi="5" ci="0" mb="0" cb="0"/><line nr="18" mi="3" ci="0" mb="0" cb="0"/><line nr="19" mi="3" ci="0" mb="0" cb="0"/><line nr="23" mi="5" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="26" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="LoginViewModel.kt"><line nr="11" mi="6" ci="0" mb="0" cb="0"/><line nr="13" mi="5" ci="0" mb="0" cb="0"/><line nr="14" mi="8" ci="0" mb="0" cb="0"/><line nr="16" mi="5" ci="0" mb="0" cb="0"/><line nr="17" mi="8" ci="0" mb="0" cb="0"/><line nr="21" mi="6" ci="0" mb="0" cb="0"/><line nr="23" mi="3" ci="0" mb="2" cb="0"/><line nr="24" mi="4" ci="0" mb="0" cb="0"/><line nr="25" mi="14" ci="0" mb="0" cb="0"/><line nr="27" mi="11" ci="0" mb="0" cb="0"/><line nr="29" mi="1" ci="0" mb="0" cb="0"/><line nr="32" mi="4" ci="0" mb="2" cb="0"/><line nr="33" mi="13" ci="0" mb="0" cb="0"/><line nr="34" mi="4" ci="0" mb="2" cb="0"/><line nr="35" mi="13" ci="0" mb="0" cb="0"/><line nr="37" mi="11" ci="0" mb="0" cb="0"/><line nr="39" mi="1" ci="0" mb="0" cb="0"/><line nr="43" mi="9" ci="0" mb="2" cb="0"/><line nr="44" mi="6" ci="0" mb="0" cb="0"/><line nr="46" mi="7" ci="0" mb="2" cb="0"/><line nr="52" mi="8" ci="0" mb="2" cb="0"/><counter type="INSTRUCTION" missed="162" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="21" covered="0"/><counter type="COMPLEXITY" missed="13" covered="0"/><counter type="METHOD" missed="7" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="576" covered="0"/><counter type="BRANCH" missed="28" covered="0"/><counter type="LINE" missed="106" covered="0"/><counter type="COMPLEXITY" missed="49" covered="0"/><counter type="METHOD" missed="35" covered="0"/><counter type="CLASS" missed="8" covered="0"/></package><package name="com/example/login/ui/data"><class name="com/example/login/ui/data/Result" sourcefilename="Result.kt"><method name="toString" desc="()Ljava/lang/String;" line="13"><counter type="INSTRUCTION" missed="18" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="18" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/login/ui/data/Result$Success" sourcefilename="Result.kt"><method name="&lt;init&gt;" desc="(Ljava/lang/Object;)V" line="9"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getData" desc="()Ljava/lang/Object;" line="9"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="com/example/login/ui/data/LoginRepository" sourcefilename="LoginRepository.kt"><method name="&lt;init&gt;" desc="(Lcom/example/login/ui/data/LoginDataSource;)V" line="10"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getDataSource" desc="()Lcom/example/login/ui/data/LoginDataSource;" line="10"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getUser" desc="()Lcom/example/login/ui/data/model/LoggedInUser;" line="13"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isLoggedIn" desc="()Z" line="17"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="logout" desc="()V" line="26"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="login" desc="(Ljava/lang/String;Ljava/lang/String;)Lcom/example/login/ui/data/Result;" line="32"><counter type="INSTRUCTION" missed="23" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setLoggedInUser" desc="(Lcom/example/login/ui/data/model/LoggedInUser;)V" line="42"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="61" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="15" covered="0"/><counter type="COMPLEXITY" missed="9" covered="0"/><counter type="METHOD" missed="7" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/login/ui/data/Result$Error" sourcefilename="Result.kt"><method name="&lt;init&gt;" desc="(Ljava/lang/Exception;)V" line="10"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getException" desc="()Ljava/lang/Exception;" line="10"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="13" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/login/ui/data/LoginDataSource" sourcefilename="LoginDataSource.kt"><method name="&lt;init&gt;" desc="()V" line="10"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="login" desc="(Ljava/lang/String;Ljava/lang/String;)Lcom/example/login/ui/data/Result;" line="13"><counter type="INSTRUCTION" missed="12" covered="23"/><counter type="LINE" missed="2" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="logout" desc="()V" line="24"><counter type="INSTRUCTION" missed="1" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="13" covered="26"/><counter type="LINE" missed="3" covered="4"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="Result.kt"><line nr="9" mi="0" ci="10" mb="0" cb="0"/><line nr="10" mi="10" ci="0" mb="0" cb="0"/><line nr="13" mi="3" ci="0" mb="0" cb="0"/><line nr="14" mi="8" ci="0" mb="2" cb="0"/><line nr="15" mi="7" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="31" covered="13"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="4" covered="1"/><counter type="COMPLEXITY" missed="4" covered="2"/><counter type="METHOD" missed="3" covered="2"/><counter type="CLASS" missed="2" covered="1"/></sourcefile><sourcefile name="LoginRepository.kt"><line nr="10" mi="9" ci="0" mb="0" cb="0"/><line nr="13" mi="3" ci="0" mb="0" cb="0"/><line nr="17" mi="7" ci="0" mb="2" cb="0"/><line nr="19" mi="1" ci="0" mb="0" cb="0"/><line nr="22" mi="3" ci="0" mb="0" cb="0"/><line nr="23" mi="1" ci="0" mb="0" cb="0"/><line nr="26" mi="3" ci="0" mb="0" cb="0"/><line nr="27" mi="3" ci="0" mb="0" cb="0"/><line nr="28" mi="1" ci="0" mb="0" cb="0"/><line nr="32" mi="6" ci="0" mb="0" cb="0"/><line nr="34" mi="3" ci="0" mb="2" cb="0"/><line nr="35" mi="6" ci="0" mb="0" cb="0"/><line nr="38" mi="2" ci="0" mb="0" cb="0"/><line nr="42" mi="3" ci="0" mb="0" cb="0"/><line nr="45" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="61" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="15" covered="0"/><counter type="COMPLEXITY" missed="9" covered="0"/><counter type="METHOD" missed="7" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="LoginDataSource.kt"><line nr="10" mi="0" ci="3" mb="0" cb="0"/><line nr="13" mi="0" ci="1" mb="0" cb="0"/><line nr="15" mi="0" ci="10" mb="0" cb="0"/><line nr="16" mi="0" ci="6" mb="0" cb="0"/><line nr="17" mi="1" ci="0" mb="0" cb="0"/><line nr="18" mi="11" ci="0" mb="0" cb="0"/><line nr="24" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="13" covered="26"/><counter type="LINE" missed="3" covered="4"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="105" covered="39"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="22" covered="5"/><counter type="COMPLEXITY" missed="14" covered="4"/><counter type="METHOD" missed="11" covered="4"/><counter type="CLASS" missed="3" covered="2"/></package><package name="com/example/login/ui/data/model"><class name="com/example/login/ui/data/model/LoggedInUser" sourcefilename="LoggedInUser.kt"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="6"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getUserId" desc="()Ljava/lang/String;" line="7"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getDisplayName" desc="()Ljava/lang/String;" line="8"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="3" covered="18"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="LoggedInUser.kt"><line nr="6" mi="0" ci="3" mb="0" cb="0"/><line nr="7" mi="0" ci="6" mb="0" cb="0"/><line nr="8" mi="3" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="18"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="3" covered="18"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></package><package name="com/example/myapplication/databinding"><class name="com/example/myapplication/databinding/FragmentFirstBinding" sourcefilename="FragmentFirstBinding.java"><method name="&lt;init&gt;" desc="(Landroidx/constraintlayout/widget/ConstraintLayout;Landroid/widget/Button;Landroid/widget/TextView;)V" line="30"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getRoot" desc="()Landroidx/constraintlayout/widget/ConstraintLayout;" line="39"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="inflate" desc="(Landroid/view/LayoutInflater;)Lcom/example/myapplication/databinding/FragmentFirstBinding;" line="44"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="inflate" desc="(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Z)Lcom/example/myapplication/databinding/FragmentFirstBinding;" line="50"><counter type="INSTRUCTION" missed="3" covered="11"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="bind" desc="(Landroid/view/View;)Lcom/example/myapplication/databinding/FragmentFirstBinding;" line="63"><counter type="INSTRUCTION" missed="14" covered="26"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="4" covered="7"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="22" covered="52"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="6" covered="16"/><counter type="COMPLEXITY" missed="4" covered="4"/><counter type="METHOD" missed="1" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="com/example/myapplication/databinding/FragmentSecondBinding" sourcefilename="FragmentSecondBinding.java"><method name="&lt;init&gt;" desc="(Landroidx/constraintlayout/widget/ConstraintLayout;Landroid/widget/Button;Landroid/widget/TextView;)V" line="30"><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getRoot" desc="()Landroidx/constraintlayout/widget/ConstraintLayout;" line="39"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="inflate" desc="(Landroid/view/LayoutInflater;)Lcom/example/myapplication/databinding/FragmentSecondBinding;" line="44"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="inflate" desc="(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Z)Lcom/example/myapplication/databinding/FragmentSecondBinding;" line="50"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="bind" desc="(Landroid/view/View;)Lcom/example/myapplication/databinding/FragmentSecondBinding;" line="63"><counter type="INSTRUCTION" missed="40" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="11" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="74" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="22" covered="0"/><counter type="COMPLEXITY" missed="8" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="com/example/myapplication/databinding/ActivityMainBinding" sourcefilename="ActivityMainBinding.java"><method name="&lt;init&gt;" desc="(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Lcom/google/android/material/floatingactionbutton/FloatingActionButton;Landroidx/appcompat/widget/Toolbar;)V" line="30"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getRoot" desc="()Landroidx/coordinatorlayout/widget/CoordinatorLayout;" line="39"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="inflate" desc="(Landroid/view/LayoutInflater;)Lcom/example/myapplication/databinding/ActivityMainBinding;" line="44"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="inflate" desc="(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Z)Lcom/example/myapplication/databinding/ActivityMainBinding;" line="50"><counter type="INSTRUCTION" missed="3" covered="11"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="bind" desc="(Landroid/view/View;)Lcom/example/myapplication/databinding/ActivityMainBinding;" line="63"><counter type="INSTRUCTION" missed="14" covered="26"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="4" covered="7"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="17" covered="57"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="5" covered="17"/><counter type="COMPLEXITY" missed="3" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="FragmentFirstBinding.java"><line nr="30" mi="0" ci="2" mb="0" cb="0"/><line nr="31" mi="0" ci="3" mb="0" cb="0"/><line nr="32" mi="0" ci="3" mb="0" cb="0"/><line nr="33" mi="0" ci="3" mb="0" cb="0"/><line nr="34" mi="0" ci="1" mb="0" cb="0"/><line nr="39" mi="0" ci="3" mb="0" cb="0"/><line nr="44" mi="5" ci="0" mb="0" cb="0"/><line nr="50" mi="0" ci="6" mb="0" cb="0"/><line nr="51" mi="0" ci="2" mb="1" cb="1"/><line nr="52" mi="3" ci="0" mb="0" cb="0"/><line nr="54" mi="0" ci="3" mb="0" cb="0"/><line nr="63" mi="0" ci="2" mb="0" cb="0"/><line nr="64" mi="0" ci="5" mb="0" cb="0"/><line nr="65" mi="0" ci="2" mb="1" cb="1"/><line nr="66" mi="1" ci="0" mb="0" cb="0"/><line nr="69" mi="0" ci="2" mb="0" cb="0"/><line nr="70" mi="0" ci="5" mb="0" cb="0"/><line nr="71" mi="0" ci="2" mb="1" cb="1"/><line nr="72" mi="1" ci="0" mb="0" cb="0"/><line nr="75" mi="0" ci="8" mb="0" cb="0"/><line nr="77" mi="5" ci="0" mb="0" cb="0"/><line nr="78" mi="7" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="22" covered="52"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="6" covered="16"/><counter type="COMPLEXITY" missed="4" covered="4"/><counter type="METHOD" missed="1" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="FragmentSecondBinding.java"><line nr="30" mi="2" ci="0" mb="0" cb="0"/><line nr="31" mi="3" ci="0" mb="0" cb="0"/><line nr="32" mi="3" ci="0" mb="0" cb="0"/><line nr="33" mi="3" ci="0" mb="0" cb="0"/><line nr="34" mi="1" ci="0" mb="0" cb="0"/><line nr="39" mi="3" ci="0" mb="0" cb="0"/><line nr="44" mi="5" ci="0" mb="0" cb="0"/><line nr="50" mi="6" ci="0" mb="0" cb="0"/><line nr="51" mi="2" ci="0" mb="2" cb="0"/><line nr="52" mi="3" ci="0" mb="0" cb="0"/><line nr="54" mi="3" ci="0" mb="0" cb="0"/><line nr="63" mi="2" ci="0" mb="0" cb="0"/><line nr="64" mi="5" ci="0" mb="0" cb="0"/><line nr="65" mi="2" ci="0" mb="2" cb="0"/><line nr="66" mi="1" ci="0" mb="0" cb="0"/><line nr="69" mi="2" ci="0" mb="0" cb="0"/><line nr="70" mi="5" ci="0" mb="0" cb="0"/><line nr="71" mi="2" ci="0" mb="2" cb="0"/><line nr="72" mi="1" ci="0" mb="0" cb="0"/><line nr="75" mi="8" ci="0" mb="0" cb="0"/><line nr="77" mi="5" ci="0" mb="0" cb="0"/><line nr="78" mi="7" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="74" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="22" covered="0"/><counter type="COMPLEXITY" missed="8" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="ActivityMainBinding.java"><line nr="30" mi="0" ci="2" mb="0" cb="0"/><line nr="31" mi="0" ci="3" mb="0" cb="0"/><line nr="32" mi="0" ci="3" mb="0" cb="0"/><line nr="33" mi="0" ci="3" mb="0" cb="0"/><line nr="34" mi="0" ci="1" mb="0" cb="0"/><line nr="39" mi="0" ci="3" mb="0" cb="0"/><line nr="44" mi="0" ci="5" mb="0" cb="0"/><line nr="50" mi="0" ci="6" mb="0" cb="0"/><line nr="51" mi="0" ci="2" mb="1" cb="1"/><line nr="52" mi="3" ci="0" mb="0" cb="0"/><line nr="54" mi="0" ci="3" mb="0" cb="0"/><line nr="63" mi="0" ci="2" mb="0" cb="0"/><line nr="64" mi="0" ci="5" mb="0" cb="0"/><line nr="65" mi="0" ci="2" mb="1" cb="1"/><line nr="66" mi="1" ci="0" mb="0" cb="0"/><line nr="69" mi="0" ci="2" mb="0" cb="0"/><line nr="70" mi="0" ci="5" mb="0" cb="0"/><line nr="71" mi="0" ci="2" mb="1" cb="1"/><line nr="72" mi="1" ci="0" mb="0" cb="0"/><line nr="75" mi="0" ci="8" mb="0" cb="0"/><line nr="77" mi="5" ci="0" mb="0" cb="0"/><line nr="78" mi="7" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="17" covered="57"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="5" covered="17"/><counter type="COMPLEXITY" missed="3" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="113" covered="109"/><counter type="BRANCH" missed="12" covered="6"/><counter type="LINE" missed="33" covered="33"/><counter type="COMPLEXITY" missed="15" covered="9"/><counter type="METHOD" missed="6" covered="9"/><counter type="CLASS" missed="1" covered="2"/></package><counter type="INSTRUCTION" missed="1380" covered="293"/><counter type="BRANCH" missed="92" covered="6"/><counter type="LINE" missed="280" covered="67"/><counter type="COMPLEXITY" missed="133" covered="32"/><counter type="METHOD" missed="82" covered="32"/><counter type="CLASS" missed="19" covered="12"/></report>
    \ No newline at end of file
    diff --git a/demo-project/specs/aggregated-reports/tests/classes/MyUseCaseTest.html b/demo-project/specs/aggregated-reports/tests/classes/MyUseCaseTest.html
    new file mode 100644
    index 0000000..c5ac3ea
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/classes/MyUseCaseTest.html
    @@ -0,0 +1,96 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Class MyUseCaseTest</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Class MyUseCaseTest</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; 
    +<a href="../packages/default-package.html">default-package</a> &gt; MyUseCaseTest</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">1</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">0.008s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Tests</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Tests</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Test</th>
    +<th>Duration</th>
    +<th>Result</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">testIsDone</td>
    +<td class="success">0.008s</td>
    +<td class="success">passed</td>
    +</tr>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/classes/com.example.kmp.KMPObjectAndroidTest.html b/demo-project/specs/aggregated-reports/tests/classes/com.example.kmp.KMPObjectAndroidTest.html
    new file mode 100644
    index 0000000..f8231a5
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/classes/com.example.kmp.KMPObjectAndroidTest.html
    @@ -0,0 +1,101 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Class com.example.kmp.KMPObjectAndroidTest</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Class com.example.kmp.KMPObjectAndroidTest</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; 
    +<a href="../packages/com.example.kmp.html">com.example.kmp</a> &gt; KMPObjectAndroidTest</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">2</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">0.067s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Tests</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Tests</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Test</th>
    +<th>Duration</th>
    +<th>Result</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">testKMPObject</td>
    +<td class="success">0.034s</td>
    +<td class="success">passed</td>
    +</tr>
    +<tr>
    +<td class="success">testKMPObject</td>
    +<td class="success">0.033s</td>
    +<td class="success">passed</td>
    +</tr>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/classes/com.example.kmp.KMPObjectJVMTest.html b/demo-project/specs/aggregated-reports/tests/classes/com.example.kmp.KMPObjectJVMTest.html
    new file mode 100644
    index 0000000..8db0dca
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/classes/com.example.kmp.KMPObjectJVMTest.html
    @@ -0,0 +1,98 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Class com.example.kmp.KMPObjectJVMTest</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Class com.example.kmp.KMPObjectJVMTest</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; 
    +<a href="../packages/com.example.kmp.html">com.example.kmp</a> &gt; KMPObjectJVMTest</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">1</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">0.060s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Tests</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Tests</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Test</th>
    +<th>Method name</th>
    +<th>Duration</th>
    +<th>Result</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">testKMPObject[jvm]</td>
    +<td class="success">testKMPObject</td>
    +<td class="success">0.060s</td>
    +<td class="success">passed</td>
    +</tr>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/classes/com.example.kmp.KMPObjectTest.html b/demo-project/specs/aggregated-reports/tests/classes/com.example.kmp.KMPObjectTest.html
    new file mode 100644
    index 0000000..bf93824
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/classes/com.example.kmp.KMPObjectTest.html
    @@ -0,0 +1,110 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Class com.example.kmp.KMPObjectTest</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Class com.example.kmp.KMPObjectTest</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; 
    +<a href="../packages/com.example.kmp.html">com.example.kmp</a> &gt; KMPObjectTest</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">3</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">0.003s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Tests</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Tests</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Test</th>
    +<th>Method name</th>
    +<th>Duration</th>
    +<th>Result</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">testKMPObject[jvm]</td>
    +<td class="success">testKMPObject</td>
    +<td class="success">0.002s</td>
    +<td class="success">passed</td>
    +</tr>
    +<tr>
    +<td class="success">testKMPObject</td>
    +<td class="success">testKMPObject</td>
    +<td class="success">0.001s</td>
    +<td class="success">passed</td>
    +</tr>
    +<tr>
    +<td class="success">testKMPObject</td>
    +<td class="success">testKMPObject</td>
    +<td class="success">0s</td>
    +<td class="success">passed</td>
    +</tr>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/classes/com.example.login.ExampleUnitTest.html b/demo-project/specs/aggregated-reports/tests/classes/com.example.login.ExampleUnitTest.html
    new file mode 100644
    index 0000000..e53352a
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/classes/com.example.login.ExampleUnitTest.html
    @@ -0,0 +1,96 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Class com.example.login.ExampleUnitTest</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Class com.example.login.ExampleUnitTest</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; 
    +<a href="../packages/com.example.login.html">com.example.login</a> &gt; ExampleUnitTest</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">1</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">0.001s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Tests</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Tests</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Test</th>
    +<th>Duration</th>
    +<th>Result</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">addition_isCorrect</td>
    +<td class="success">0.001s</td>
    +<td class="success">passed</td>
    +</tr>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/classes/com.example.login.ui.data.LoginDataSourceTest.html b/demo-project/specs/aggregated-reports/tests/classes/com.example.login.ui.data.LoginDataSourceTest.html
    new file mode 100644
    index 0000000..2b463d4
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/classes/com.example.login.ui.data.LoginDataSourceTest.html
    @@ -0,0 +1,96 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Class com.example.login.ui.data.LoginDataSourceTest</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Class com.example.login.ui.data.LoginDataSourceTest</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; 
    +<a href="../packages/com.example.login.ui.data.html">com.example.login.ui.data</a> &gt; LoginDataSourceTest</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">1</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">0.003s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Tests</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Tests</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Test</th>
    +<th>Duration</th>
    +<th>Result</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">testLogin</td>
    +<td class="success">0.003s</td>
    +<td class="success">passed</td>
    +</tr>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/classes/com.example.myapplication.ExampleUnitTest.html b/demo-project/specs/aggregated-reports/tests/classes/com.example.myapplication.ExampleUnitTest.html
    new file mode 100644
    index 0000000..708c6b9
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/classes/com.example.myapplication.ExampleUnitTest.html
    @@ -0,0 +1,101 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Class com.example.myapplication.ExampleUnitTest</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Class com.example.myapplication.ExampleUnitTest</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; 
    +<a href="../packages/com.example.myapplication.html">com.example.myapplication</a> &gt; ExampleUnitTest</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">2</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">0.006s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Tests</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Tests</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Test</th>
    +<th>Duration</th>
    +<th>Result</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">addition_isCorrect</td>
    +<td class="success">0.001s</td>
    +<td class="success">passed</td>
    +</tr>
    +<tr>
    +<td class="success">addition_isCorrect</td>
    +<td class="success">0.005s</td>
    +<td class="success">passed</td>
    +</tr>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/classes/com.example.myapplication.MainActivityTest.html b/demo-project/specs/aggregated-reports/tests/classes/com.example.myapplication.MainActivityTest.html
    new file mode 100644
    index 0000000..fab914b
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/classes/com.example.myapplication.MainActivityTest.html
    @@ -0,0 +1,114 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Class com.example.myapplication.MainActivityTest</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Class com.example.myapplication.MainActivityTest</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; 
    +<a href="../packages/com.example.myapplication.html">com.example.myapplication</a> &gt; MainActivityTest</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">2</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">6.137s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Tests</a>
    +</li>
    +<li>
    +<a href="#tab1">Standard error</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Tests</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Test</th>
    +<th>Duration</th>
    +<th>Result</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">shouldStart</td>
    +<td class="success">3.089s</td>
    +<td class="success">passed</td>
    +</tr>
    +<tr>
    +<td class="success">shouldStart</td>
    +<td class="success">3.048s</td>
    +<td class="success">passed</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tab1" class="tab">
    +<h2>Standard error</h2>
    +<span class="code">
    +<pre>[Robolectric] WARN: Android SDK 34 requires Java 17 (have Java 11). Tests won't be run on SDK 34 unless explicitly requested.
    +[Robolectric] WARN: Android SDK 35 requires Java 17 (have Java 11). Tests won't be run on SDK 35 unless explicitly requested.
    +[Robolectric] WARN: Android SDK 34 requires Java 17 (have Java 11). Tests won't be run on SDK 34 unless explicitly requested.
    +[Robolectric] WARN: Android SDK 35 requires Java 17 (have Java 11). Tests won't be run on SDK 35 unless explicitly requested.
    +</pre>
    +</span>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/css/base-style.css b/demo-project/specs/aggregated-reports/tests/css/base-style.css
    new file mode 100644
    index 0000000..4afa73e
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/css/base-style.css
    @@ -0,0 +1,179 @@
    +
    +body {
    +    margin: 0;
    +    padding: 0;
    +    font-family: sans-serif;
    +    font-size: 12pt;
    +}
    +
    +body, a, a:visited {
    +    color: #303030;
    +}
    +
    +#content {
    +    padding-left: 50px;
    +    padding-right: 50px;
    +    padding-top: 30px;
    +    padding-bottom: 30px;
    +}
    +
    +#content h1 {
    +    font-size: 160%;
    +    margin-bottom: 10px;
    +}
    +
    +#footer {
    +    margin-top: 100px;
    +    font-size: 80%;
    +    white-space: nowrap;
    +}
    +
    +#footer, #footer a {
    +    color: #a0a0a0;
    +}
    +
    +#line-wrapping-toggle {
    +    vertical-align: middle;
    +}
    +
    +#label-for-line-wrapping-toggle {
    +    vertical-align: middle;
    +}
    +
    +ul {
    +    margin-left: 0;
    +}
    +
    +h1, h2, h3 {
    +    white-space: nowrap;
    +}
    +
    +h2 {
    +    font-size: 120%;
    +}
    +
    +ul.tabLinks {
    +    padding-left: 0;
    +    padding-top: 10px;
    +    padding-bottom: 10px;
    +    overflow: auto;
    +    min-width: 800px;
    +    width: auto !important;
    +    width: 800px;
    +}
    +
    +ul.tabLinks li {
    +    float: left;
    +    height: 100%;
    +    list-style: none;
    +    padding-left: 10px;
    +    padding-right: 10px;
    +    padding-top: 5px;
    +    padding-bottom: 5px;
    +    margin-bottom: 0;
    +    -moz-border-radius: 7px;
    +    border-radius: 7px;
    +    margin-right: 25px;
    +    border: solid 1px #d4d4d4;
    +    background-color: #f0f0f0;
    +}
    +
    +ul.tabLinks li:hover {
    +    background-color: #fafafa;
    +}
    +
    +ul.tabLinks li.selected {
    +    background-color: #c5f0f5;
    +    border-color: #c5f0f5;
    +}
    +
    +ul.tabLinks a {
    +    font-size: 120%;
    +    display: block;
    +    outline: none;
    +    text-decoration: none;
    +    margin: 0;
    +    padding: 0;
    +}
    +
    +ul.tabLinks li h2 {
    +    margin: 0;
    +    padding: 0;
    +}
    +
    +div.tab {
    +}
    +
    +div.selected {
    +    display: block;
    +}
    +
    +div.deselected {
    +    display: none;
    +}
    +
    +div.tab table {
    +    min-width: 350px;
    +    width: auto !important;
    +    width: 350px;
    +    border-collapse: collapse;
    +}
    +
    +div.tab th, div.tab table {
    +    border-bottom: solid #d0d0d0 1px;
    +}
    +
    +div.tab th {
    +    text-align: left;
    +    white-space: nowrap;
    +    padding-left: 6em;
    +}
    +
    +div.tab th:first-child {
    +    padding-left: 0;
    +}
    +
    +div.tab td {
    +    white-space: nowrap;
    +    padding-left: 6em;
    +    padding-top: 5px;
    +    padding-bottom: 5px;
    +}
    +
    +div.tab td:first-child {
    +    padding-left: 0;
    +}
    +
    +div.tab td.numeric, div.tab th.numeric {
    +    text-align: right;
    +}
    +
    +span.code {
    +    display: inline-block;
    +    margin-top: 0em;
    +    margin-bottom: 1em;
    +}
    +
    +span.code pre {
    +    font-size: 11pt;
    +    padding-top: 10px;
    +    padding-bottom: 10px;
    +    padding-left: 10px;
    +    padding-right: 10px;
    +    margin: 0;
    +    background-color: #f7f7f7;
    +    border: solid 1px #d0d0d0;
    +    min-width: 700px;
    +    width: auto !important;
    +    width: 700px;
    +}
    +
    +span.wrapped pre {
    +    word-wrap: break-word;
    +    white-space: pre-wrap;
    +    word-break: break-all;
    +}
    +
    +label.hidden {
    +    display: none;
    +}
    \ No newline at end of file
    diff --git a/demo-project/specs/aggregated-reports/tests/css/style.css b/demo-project/specs/aggregated-reports/tests/css/style.css
    new file mode 100644
    index 0000000..3dc4913
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/css/style.css
    @@ -0,0 +1,84 @@
    +
    +#summary {
    +    margin-top: 30px;
    +    margin-bottom: 40px;
    +}
    +
    +#summary table {
    +    border-collapse: collapse;
    +}
    +
    +#summary td {
    +    vertical-align: top;
    +}
    +
    +.breadcrumbs, .breadcrumbs a {
    +    color: #606060;
    +}
    +
    +.infoBox {
    +    width: 110px;
    +    padding-top: 15px;
    +    padding-bottom: 15px;
    +    text-align: center;
    +}
    +
    +.infoBox p {
    +    margin: 0;
    +}
    +
    +.counter, .percent {
    +    font-size: 120%;
    +    font-weight: bold;
    +    margin-bottom: 8px;
    +}
    +
    +#duration {
    +    width: 125px;
    +}
    +
    +#successRate, .summaryGroup {
    +    border: solid 2px #d0d0d0;
    +    -moz-border-radius: 10px;
    +    border-radius: 10px;
    +}
    +
    +#successRate {
    +    width: 140px;
    +    margin-left: 35px;
    +}
    +
    +#successRate .percent {
    +    font-size: 180%;
    +}
    +
    +.success, .success a {
    +    color: #008000;
    +}
    +
    +div.success, #successRate.success {
    +    background-color: #bbd9bb;
    +    border-color: #008000;
    +}
    +
    +.failures, .failures a {
    +    color: #b60808;
    +}
    +
    +.skipped, .skipped a {
    +    color: #c09853;
    +}
    +
    +div.failures, #successRate.failures {
    +    background-color: #ecdada;
    +    border-color: #b60808;
    +}
    +
    +ul.linkList {
    +    padding-left: 0;
    +}
    +
    +ul.linkList li {
    +    list-style: none;
    +    margin-bottom: 5px;
    +}
    diff --git a/demo-project/specs/aggregated-reports/tests/index.html b/demo-project/specs/aggregated-reports/tests/index.html
    new file mode 100644
    index 0000000..dc594ad
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/index.html
    @@ -0,0 +1,243 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Test Summary</title>
    +<link href="css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Test Summary</h1>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">13</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">6.285s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Packages</a>
    +</li>
    +<li>
    +<a href="#tab1">Classes</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Packages</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Package</th>
    +<th>Tests</th>
    +<th>Failures</th>
    +<th>Ignored</th>
    +<th>Duration</th>
    +<th>Success rate</th>
    +</tr>
    +</thead>
    +<tbody>
    +<tr>
    +<td class="success">
    +<a href="packages/default-package.html">default-package</a>
    +</td>
    +<td>1</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.008s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="packages/com.example.kmp.html">com.example.kmp</a>
    +</td>
    +<td>6</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.130s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="packages/com.example.login.html">com.example.login</a>
    +</td>
    +<td>1</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.001s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="packages/com.example.login.ui.data.html">com.example.login.ui.data</a>
    +</td>
    +<td>1</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.003s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="packages/com.example.myapplication.html">com.example.myapplication</a>
    +</td>
    +<td>4</td>
    +<td>0</td>
    +<td>0</td>
    +<td>6.143s</td>
    +<td class="success">100%</td>
    +</tr>
    +</tbody>
    +</table>
    +</div>
    +<div id="tab1" class="tab">
    +<h2>Classes</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Class</th>
    +<th>Tests</th>
    +<th>Failures</th>
    +<th>Ignored</th>
    +<th>Duration</th>
    +<th>Success rate</th>
    +</tr>
    +</thead>
    +<tbody>
    +<tr>
    +<td class="success">
    +<a href="classes/MyUseCaseTest.html">MyUseCaseTest</a>
    +</td>
    +<td>1</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.008s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="classes/com.example.kmp.KMPObjectAndroidTest.html">com.example.kmp.KMPObjectAndroidTest</a>
    +</td>
    +<td>2</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.067s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="classes/com.example.kmp.KMPObjectJVMTest.html">com.example.kmp.KMPObjectJVMTest</a>
    +</td>
    +<td>1</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.060s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="classes/com.example.kmp.KMPObjectTest.html">com.example.kmp.KMPObjectTest</a>
    +</td>
    +<td>3</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.003s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="classes/com.example.login.ExampleUnitTest.html">com.example.login.ExampleUnitTest</a>
    +</td>
    +<td>1</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.001s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="classes/com.example.login.ui.data.LoginDataSourceTest.html">com.example.login.ui.data.LoginDataSourceTest</a>
    +</td>
    +<td>1</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.003s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="classes/com.example.myapplication.ExampleUnitTest.html">com.example.myapplication.ExampleUnitTest</a>
    +</td>
    +<td>2</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.006s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="classes/com.example.myapplication.MainActivityTest.html">com.example.myapplication.MainActivityTest</a>
    +</td>
    +<td>2</td>
    +<td>0</td>
    +<td>0</td>
    +<td>6.137s</td>
    +<td class="success">100%</td>
    +</tr>
    +</tbody>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/js/report.js b/demo-project/specs/aggregated-reports/tests/js/report.js
    new file mode 100644
    index 0000000..83bab4a
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/js/report.js
    @@ -0,0 +1,194 @@
    +(function (window, document) {
    +    "use strict";
    +
    +    var tabs = {};
    +
    +    function changeElementClass(element, classValue) {
    +        if (element.getAttribute("className")) {
    +            element.setAttribute("className", classValue);
    +        } else {
    +            element.setAttribute("class", classValue);
    +        }
    +    }
    +
    +    function getClassAttribute(element) {
    +        if (element.getAttribute("className")) {
    +            return element.getAttribute("className");
    +        } else {
    +            return element.getAttribute("class");
    +        }
    +    }
    +
    +    function addClass(element, classValue) {
    +        changeElementClass(element, getClassAttribute(element) + " " + classValue);
    +    }
    +
    +    function removeClass(element, classValue) {
    +        changeElementClass(element, getClassAttribute(element).replace(classValue, ""));
    +    }
    +
    +    function initTabs() {
    +        var container = document.getElementById("tabs");
    +
    +        tabs.tabs = findTabs(container);
    +        tabs.titles = findTitles(tabs.tabs);
    +        tabs.headers = findHeaders(container);
    +        tabs.select = select;
    +        tabs.deselectAll = deselectAll;
    +        tabs.select(0);
    +
    +        return true;
    +    }
    +
    +    function getCheckBox() {
    +        return document.getElementById("line-wrapping-toggle");
    +    }
    +
    +    function getLabelForCheckBox() {
    +        return document.getElementById("label-for-line-wrapping-toggle");
    +    }
    +
    +    function findCodeBlocks() {
    +        var spans = document.getElementById("tabs").getElementsByTagName("span");
    +        var codeBlocks = [];
    +        for (var i = 0; i < spans.length; ++i) {
    +            if (spans[i].className.indexOf("code") >= 0) {
    +                codeBlocks.push(spans[i]);
    +            }
    +        }
    +        return codeBlocks;
    +    }
    +
    +    function forAllCodeBlocks(operation) {
    +        var codeBlocks = findCodeBlocks();
    +
    +        for (var i = 0; i < codeBlocks.length; ++i) {
    +            operation(codeBlocks[i], "wrapped");
    +        }
    +    }
    +
    +    function toggleLineWrapping() {
    +        var checkBox = getCheckBox();
    +
    +        if (checkBox.checked) {
    +            forAllCodeBlocks(addClass);
    +        } else {
    +            forAllCodeBlocks(removeClass);
    +        }
    +    }
    +
    +    function initControls() {
    +        if (findCodeBlocks().length > 0) {
    +            var checkBox = getCheckBox();
    +            var label = getLabelForCheckBox();
    +
    +            checkBox.onclick = toggleLineWrapping;
    +            checkBox.checked = false;
    +
    +            removeClass(label, "hidden");
    +         }
    +    }
    +
    +    function switchTab() {
    +        var id = this.id.substr(1);
    +
    +        for (var i = 0; i < tabs.tabs.length; i++) {
    +            if (tabs.tabs[i].id === id) {
    +                tabs.select(i);
    +                break;
    +            }
    +        }
    +
    +        return false;
    +    }
    +
    +    function select(i) {
    +        this.deselectAll();
    +
    +        changeElementClass(this.tabs[i], "tab selected");
    +        changeElementClass(this.headers[i], "selected");
    +
    +        while (this.headers[i].firstChild) {
    +            this.headers[i].removeChild(this.headers[i].firstChild);
    +        }
    +
    +        var h2 = document.createElement("H2");
    +
    +        h2.appendChild(document.createTextNode(this.titles[i]));
    +        this.headers[i].appendChild(h2);
    +    }
    +
    +    function deselectAll() {
    +        for (var i = 0; i < this.tabs.length; i++) {
    +            changeElementClass(this.tabs[i], "tab deselected");
    +            changeElementClass(this.headers[i], "deselected");
    +
    +            while (this.headers[i].firstChild) {
    +                this.headers[i].removeChild(this.headers[i].firstChild);
    +            }
    +
    +            var a = document.createElement("A");
    +
    +            a.setAttribute("id", "ltab" + i);
    +            a.setAttribute("href", "#tab" + i);
    +            a.onclick = switchTab;
    +            a.appendChild(document.createTextNode(this.titles[i]));
    +
    +            this.headers[i].appendChild(a);
    +        }
    +    }
    +
    +    function findTabs(container) {
    +        return findChildElements(container, "DIV", "tab");
    +    }
    +
    +    function findHeaders(container) {
    +        var owner = findChildElements(container, "UL", "tabLinks");
    +        return findChildElements(owner[0], "LI", null);
    +    }
    +
    +    function findTitles(tabs) {
    +        var titles = [];
    +
    +        for (var i = 0; i < tabs.length; i++) {
    +            var tab = tabs[i];
    +            var header = findChildElements(tab, "H2", null)[0];
    +
    +            header.parentNode.removeChild(header);
    +
    +            if (header.innerText) {
    +                titles.push(header.innerText);
    +            } else {
    +                titles.push(header.textContent);
    +            }
    +        }
    +
    +        return titles;
    +    }
    +
    +    function findChildElements(container, name, targetClass) {
    +        var elements = [];
    +        var children = container.childNodes;
    +
    +        for (var i = 0; i < children.length; i++) {
    +            var child = children.item(i);
    +
    +            if (child.nodeType === 1 && child.nodeName === name) {
    +                if (targetClass && child.className.indexOf(targetClass) < 0) {
    +                    continue;
    +                }
    +
    +                elements.push(child);
    +            }
    +        }
    +
    +        return elements;
    +    }
    +
    +    // Entry point.
    +
    +    window.onload = function() {
    +        initTabs();
    +        initControls();
    +    };
    +} (window, window.document));
    \ No newline at end of file
    diff --git a/demo-project/specs/aggregated-reports/tests/packages/com.example.kmp.html b/demo-project/specs/aggregated-reports/tests/packages/com.example.kmp.html
    new file mode 100644
    index 0000000..e5c42ce
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/packages/com.example.kmp.html
    @@ -0,0 +1,123 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Package com.example.kmp</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Package com.example.kmp</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; com.example.kmp</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">6</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">0.130s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Classes</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Classes</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Class</th>
    +<th>Tests</th>
    +<th>Failures</th>
    +<th>Ignored</th>
    +<th>Duration</th>
    +<th>Success rate</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">
    +<a href="../classes/com.example.kmp.KMPObjectAndroidTest.html">KMPObjectAndroidTest</a>
    +</td>
    +<td>2</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.067s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="../classes/com.example.kmp.KMPObjectJVMTest.html">KMPObjectJVMTest</a>
    +</td>
    +<td>1</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.060s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="../classes/com.example.kmp.KMPObjectTest.html">KMPObjectTest</a>
    +</td>
    +<td>3</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.003s</td>
    +<td class="success">100%</td>
    +</tr>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/packages/com.example.login.html b/demo-project/specs/aggregated-reports/tests/packages/com.example.login.html
    new file mode 100644
    index 0000000..f0b800d
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/packages/com.example.login.html
    @@ -0,0 +1,103 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Package com.example.login</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Package com.example.login</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; com.example.login</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">1</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">0.001s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Classes</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Classes</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Class</th>
    +<th>Tests</th>
    +<th>Failures</th>
    +<th>Ignored</th>
    +<th>Duration</th>
    +<th>Success rate</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">
    +<a href="../classes/com.example.login.ExampleUnitTest.html">ExampleUnitTest</a>
    +</td>
    +<td>1</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.001s</td>
    +<td class="success">100%</td>
    +</tr>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/packages/com.example.login.ui.data.html b/demo-project/specs/aggregated-reports/tests/packages/com.example.login.ui.data.html
    new file mode 100644
    index 0000000..582a3fa
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/packages/com.example.login.ui.data.html
    @@ -0,0 +1,103 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Package com.example.login.ui.data</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Package com.example.login.ui.data</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; com.example.login.ui.data</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">1</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">0.003s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Classes</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Classes</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Class</th>
    +<th>Tests</th>
    +<th>Failures</th>
    +<th>Ignored</th>
    +<th>Duration</th>
    +<th>Success rate</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">
    +<a href="../classes/com.example.login.ui.data.LoginDataSourceTest.html">LoginDataSourceTest</a>
    +</td>
    +<td>1</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.003s</td>
    +<td class="success">100%</td>
    +</tr>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/packages/com.example.myapplication.html b/demo-project/specs/aggregated-reports/tests/packages/com.example.myapplication.html
    new file mode 100644
    index 0000000..e36a355
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/packages/com.example.myapplication.html
    @@ -0,0 +1,113 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Package com.example.myapplication</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Package com.example.myapplication</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; com.example.myapplication</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">4</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">6.143s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Classes</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Classes</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Class</th>
    +<th>Tests</th>
    +<th>Failures</th>
    +<th>Ignored</th>
    +<th>Duration</th>
    +<th>Success rate</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">
    +<a href="../classes/com.example.myapplication.ExampleUnitTest.html">ExampleUnitTest</a>
    +</td>
    +<td>2</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.006s</td>
    +<td class="success">100%</td>
    +</tr>
    +<tr>
    +<td class="success">
    +<a href="../classes/com.example.myapplication.MainActivityTest.html">MainActivityTest</a>
    +</td>
    +<td>2</td>
    +<td>0</td>
    +<td>0</td>
    +<td>6.137s</td>
    +<td class="success">100%</td>
    +</tr>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/demo-project/specs/aggregated-reports/tests/packages/default-package.html b/demo-project/specs/aggregated-reports/tests/packages/default-package.html
    new file mode 100644
    index 0000000..b1e0c38
    --- /dev/null
    +++ b/demo-project/specs/aggregated-reports/tests/packages/default-package.html
    @@ -0,0 +1,103 @@
    +<!DOCTYPE html>
    +<html>
    +<head>
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    +<meta http-equiv="x-ua-compatible" content="IE=edge"/>
    +<title>Test results - Default package</title>
    +<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
    +<link href="../css/style.css" rel="stylesheet" type="text/css"/>
    +<script src="../js/report.js" type="text/javascript"></script>
    +</head>
    +<body>
    +<div id="content">
    +<h1>Default package</h1>
    +<div class="breadcrumbs">
    +<a href="../index.html">all</a> &gt; default-package</div>
    +<div id="summary">
    +<table>
    +<tr>
    +<td>
    +<div class="summaryGroup">
    +<table>
    +<tr>
    +<td>
    +<div class="infoBox" id="tests">
    +<div class="counter">1</div>
    +<p>tests</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="failures">
    +<div class="counter">0</div>
    +<p>failures</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="ignored">
    +<div class="counter">0</div>
    +<p>ignored</p>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox" id="duration">
    +<div class="counter">0.008s</div>
    +<p>duration</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +</td>
    +<td>
    +<div class="infoBox success" id="successRate">
    +<div class="percent">100%</div>
    +<p>successful</p>
    +</div>
    +</td>
    +</tr>
    +</table>
    +</div>
    +<div id="tabs">
    +<ul class="tabLinks">
    +<li>
    +<a href="#tab0">Classes</a>
    +</li>
    +</ul>
    +<div id="tab0" class="tab">
    +<h2>Classes</h2>
    +<table>
    +<thead>
    +<tr>
    +<th>Class</th>
    +<th>Tests</th>
    +<th>Failures</th>
    +<th>Ignored</th>
    +<th>Duration</th>
    +<th>Success rate</th>
    +</tr>
    +</thead>
    +<tr>
    +<td class="success">
    +<a href="../classes/MyUseCaseTest.html">MyUseCaseTest</a>
    +</td>
    +<td>1</td>
    +<td>0</td>
    +<td>0</td>
    +<td>0.008s</td>
    +<td class="success">100%</td>
    +</tr>
    +</table>
    +</div>
    +</div>
    +<div id="footer">
    +<p>
    +<div>
    +<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
    +<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
    +</label>
    +</div>Generated by 
    +<a href="http://www.gradle.org">Gradle 8.11.1</a> at Nov 28, 2024, 11:29:36 AM</p>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
    index db42add..34fee0e 100644
    --- a/gradle/libs.versions.toml
    +++ b/gradle/libs.versions.toml
    @@ -18,6 +18,7 @@ androidx-navigation-ui = { module = "androidx.navigation:navigation-ui-ktx", ver
     androidx-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle" }
     androidx-test-junit = "androidx.test.ext:junit:1.2.1"
     androidx-test-espresso = "androidx.test.espresso:espresso-core:3.6.1"
    +diffUtils = { module = "io.github.java-diff-utils:java-diff-utils", version = "4.12" }
     google-material = "com.google.android.material:material:1.12.0"
     kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
     moshi-kotlin = { module = "com.squareup.moshi:moshi-kotlin", version.ref = "moshi" }